2

マージ レプリケーションで使用される MS SQL 2000 テーブルからすべての行を誤って削除してしまいました (テーブルはパブリッシャにあります)。次に、DTS 操作を使用してバックアップ データベースから行を取得し、テーブルを再作成することで、問題を悪化させました。

これにより、次の問題が発生しました。削除操作はクライアントで行を削除するようにマークしますが、DTS 操作はレプリケーション トリガーをバイパスするため、インポートされた行はサブスクライバーで挿入するようにマークされません。パブリッシャー上にあるデータであっても、実際にはサブスクライバーはデータを失います。

したがって、「心配する必要はありません」と思ったので、行をもう一度削除してから、挿入ステートメントを介して正しく追加すると、サブスクライバーに挿入するようにマークされます。

これは私の問題です。「一意のインデックス 'uc1MSmerge_tombstone' を持つオブジェクト 'MSmerge_tombstone' に重複するキー行を挿入できません」というメッセージが表示されるため、DTSed 行を削除できません。エラー。私がやりたいことは、マージ レプリケーション トリガーをバイパスしてテーブルから行を削除することです。これは可能ですか?サブスクライバーが 50 台以上の Windows モバイル デバイスであるため、レプリケーションを削除してやり直したくありません。

編集: Truncate Table コマンドを試しました。これにより、次のエラーが発生します。

4

6 に答える 6

2

挿入された行が同じIDを持つ必要がある場合は、テーブルを切り捨ててIDフィールドを0にリセットする必要がある場合があります。そうでない場合は、切り捨てるだけで問題ありません。

于 2008-09-17T14:03:51.590 に答える
2

テーブルを切り捨ててみましたか?

于 2008-09-17T14:01:08.977 に答える
1

一意のインデックスを一時的に削除し、完了したら追加することも検討できます。

于 2008-09-17T14:09:21.280 に答える
1

sp_mergedummyupdate を調べる

于 2008-09-17T15:37:25.953 に答える
0

ヒントをありがとう...私は最終的に解決策を見つけました:

テーブルからマージ削除トリガーを
削除しましたDTSされた行を削除しまし
たマージ削除トリガーを再作成し
ました挿入ステートメントを使用して行を正しく追加しました。

マージトリガーをいじるのは少し心配でしたが、すべてが正しく機能しているようです

于 2008-09-17T15:48:24.540 に答える
0

2 番目のテーブルを作成することはオプションですか? 2 番目のテーブルを作成し、必要なデータを入力し、制約/インデックスを追加してから、最初のテーブルを削除して 2 番目のテーブルの名前を変更することができます。これにより、正しいキーを持つデータが得られるはずです...そして、すべてがレプリケーションを細分化できるSQLステートメントで構成されている必要があります。それはおそらく最高のパフォーマンスではありません...そして間違いなくいくつかのリスクを課すでしょう.

複製された環境でこれを直接試したことはありませんが、少なくとも試してみる価値はあるかもしれません。

于 2008-09-17T15:34:18.940 に答える