問題タブ [merge-replication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
419 参照

sql - サブスクライバーでフィルター処理された複製行の更新が失敗する

1つのディストリビューター/パブリッシャーと多くのサブスクライバーを使用したマージレプリケーションシナリオがあります。フィルタリングされていない記事はごくわずかで、他のすべてはHOST_NAME()によってフィルタリングされているため、別個の(重複しない)パーティションが作成されます。また、SUSER_NAME()を介してフィルタリングを試みましたが無駄になりました。

フィルタリングと配信は完全に機能しますが、サブスクライバーでの更新は次のエラーメッセージで失敗します。

記事'%s'の列を更新できません。この記事のpartition_optionsプロパティの値は2または3(重複しないパーティション)であり、列は行フィルターや結合フィルターに含まれています。この状況では、サブスクライバーまたは再発行者で列を更新することはできません。トップレベルのパブリッシャーで更新する必要があります

失敗した記事には、partition_options-「重複しない、単一のサブスクリプション」の設定があります。私が実行しようとしたSQLは、いくつかのnvarcharとビットの単純なパラメーター化されたUPDATEです。

誰か私が欠けているアイデアはありますか?遠くない...

編集:SQL Server2008R2ところで。

0 投票する
1 に答える
975 参照

sql-server - 構造は異なるがフィールドが同じ 2 つのテーブルを複製する方法は?

異なる場所に 2 つの SQL サーバー データベースがあり、レプリケーションのようなことをしたいと考えています。これが私のシナリオです。最初のデータベースには、次の構造のテーブルがあります。

2番目のデータベースには、次の表があります。

ご覧のとおり、2 つの異なるデータベースにある私のテーブルの構造は同じではありません。State and cityしかし、フィールドだけを複製したいのです。最初のデータベースで変更された場合state and city、2 番目のデータベースで変更する必要があり、その逆も同様です。どうすればいいですか?レプリケーションでそれを行うことはできますか?

0 投票する
1 に答える
6638 参照

sql-server - 名前が異なり、列名が異なる2つのテーブル間のレプリケーション。そのような複製を作成することは可能ですか?

名前が異なり、列名が異なる2つのテーブル間でレプリケーションを作成する必要があります。そのような複製を作成することは可能ですか?

列Aのデータが列Dに複製され、列Bのデータが列Eに複製され、列Cのデータが列Fに複製されるように複製を構成したい

0 投票する
1 に答える
473 参照

sql-server-2008 - MergeReplication でスキーマの変更とデータをパブリッシャーからサブスクライバーに移動する

企業サーバーと約 50 のリモート クライアントがあります。イメージは Remoteclients に追加され、これらのイメージは CorporateServer にマージ レプリケートされます。当初、これらの画像はすべて BLOB にありました。filestream を使用して、イメージ バイナリを含む新しいテーブルを作成することにしました。そのため、元のイメージ テーブルをイメージと新しいテーブル Image_Source に分割しました。これは運用環境にあり、企業のデータ サイズは 250 GB です。

これで、次のテーブルができました:-

  1. 画像
  2. Images_Source

私は次のことをしなければなりません。

  1. この新しいテーブルをパブリッシャーに追加し、それをサブスクライバーにマージ レプリケートします。
  2. Images からすべてのイメージ BLOB をコピーし、Images_Source に転送します。

これを達成するために、私は次のことを行います:-

  1. 企業のパブリッシャーに新しいテーブルを追加し、スキーマの変更のレプリケートを True にします。このようにして、スキーマは企業と RemoteClient 間で同期されます。
  2. 企業では、Images_Source テーブルのトリガーを無効にし、Job を使用して Images から Images_Source テーブルにデータを移動します。
  3. すべてのデータが Images_Source テーブルにあると、すべてのサブスクライバーが同期されます。

この種の変更を行うための正しい手順について、専門家のアドバイスが必要です。そのような変更を行う前に、皆さんの経験と覚えておくべきことを共有できれば.

0 投票する
0 に答える
1552 参照

sql-server - 自動 ID 範囲管理を使用したマージ レプリケーションで、db_owner 以外の INSERT 権限を許可する

テーブルに対する INSERT 権限を持つユーザーがいます。テーブルのプライマリ範囲がなくなるまで、パブリッシャーにレコードを挿入できます。その後、INSERT を実行しようとするたびに、このエラーが発生し始めます。

[Microsoft][ODBC SQL Server ドライバー]端数切り捨て
[Microsoft][ODBC SQL Server ドライバー][SQL Server]挿入に失敗しました。データベース 'TaxDB'、レプリケートされたテーブル 'dbo.ClientHistory'、列 'ClientHistoryID' の ID 範囲チェック制約と競合しました。ID 列がレプリケーションによって自動的に管理される場合は、範囲を次のように更新します。パブリッシャーの場合、sp_adjustpublisheridentityrange を実行します。サブスクライバーの場合は、ディストリビューション エージェントまたはマージ エージェントを実行します。
[Microsoft][ODBC SQL Server Driver][SQL Server]ステートメントは終了しました。ODBC -- リンク テーブル 'ClientHistory' への挿入に失敗しました。

SQL Server 2008 R2のMS ドキュメントによると:

パブリッシャーが挿入後に ID 範囲を使い果たした場合、挿入が db_owner 固定データベース ロールのメンバーによって実行された場合、新しい範囲を自動的に割り当てることができます。挿入がそのロールに属していないユーザーによって実行された場合、ログ リーダー エージェント、マージ エージェント、または db_owner ロールのメンバーであるユーザーは、sp_adjustpublisheridentityrange (Transact-SQL)を実行する必要があります。

そのため、ドキュメントには、ユーザーは「db_owner」ロールのメンバーである必要があると記載されていますが、その理由は記載されていません。自動生成された MSmerge_ins トリガーの 1 つからの T-SQL の該当するセクションを次に示します。

テーブルに対する INSERT パーミッション (ただし、それ以外の場合はパーミッションが制限されている) を持つユーザーに、プライマリ ID 範囲からセカンダリ ID 範囲に切り替える機能を提供したいと考えています。これらのユーザーを 'db_owner's にすることはオプションではありません。ただし、制限付きの追加のアクセス許可を与えることは確かに可能です。それらの権限がどうなるかわかりません。

SQL Server 2008 マージ レプリケーションでは、自動 ID 範囲管理が既定でオンになっているため、すぐに使用できると誤って想定していました。私は ID 範囲管理なしに戻したほうがよいと考え始めています。本当に、管理者が常に介入しなくても、ユーザーがレコードを挿入できるようにしたいだけです。

0 投票する
1 に答える
258 参照

sql-server - 優れたセキュリティプラクティスと自動ID範囲管理は相互に排他的ですか?

自動ID範囲管理を使用しようとしています。ただし、ユーザーがID列を持つテーブルにレコードを挿入できるようにする唯一の方法は、レコードを作成することdb_ownerです。私は何かが足りないのですか?


完全な背景については、以前の質問を参照してください: 自動ID範囲管理を使用したマージレプリケーションで非db_ownerINSERT権限を許可する

0 投票する
1 に答える
575 参照

sql-server - マージ レプリケーションでサブスクリプション データベースの名前を変更する

マージ レプリケーションでサブスクリプション データベースの名前を変更したいと考えています。すべてのサブスクリプションが適切に同期されています。

サブスクリプション データベースの名前を変更することはできますか?

0 投票する
1 に答える
1524 参照

replication - RFI:SQLレプリケーションからMS同期への移行

SQLレプリケーションを別のテクノロジーである可能性のあるMSSYNCに置き換えることを検討しています。大規模なSAASアプリケーションのデータとスキーマを複数のデータセンター間で同期しており、高可用性、信頼性、パフォーマンスが必要です。

質問:

  1. SQLレプリケーションからSYNCに移行した経験のある人はいますか?もしそうなら、あなたの経験は何でしたか?
  2. SYNCのパフォーマンスとスケーラビリティに関する考慮事項/制約は何ですか?
  3. このシナリオではMSSyncをお勧めしますか?

コーディング、テスト、パフォーマンス操作は開発者が経験する可能性が高いため、これはサーバーサイトではなく、ここに掲載されています。

0 投票する
1 に答える
309 参照

sql-server - SQL マージ レプリケーションにおける「論理レコード」の将来

非常に貧弱なネットワーク上で SQL マージ レプリケーションを使用する新しいアプリケーションを構築しています。「論理レコード」機能は、これらのネットワークの問題に対処するのに非常に役立ち、テーブルごとに移動するのではなく、個別のトランザクションで完全な「エンティティ」を 1 つずつ複製できるようにします。

ただし、ドキュメントには次のように記載されています

この機能は、Microsoft SQL Server の将来のバージョンでは削除される予定です。新しい開発作業でこの機能を使用することは避け、現在この機能を使用しているアプリケーションを変更することを計画してください。

ドキュメントで見つけられないのは、同様の機能を得るために代わりに使用すべきものについての推奨事項です。そのような推奨事項は存在しますか?公式の推奨事項ではない場合、人々は自分で何を思いつきましたか?