2

誰かが本当に奇妙な問題で私を助けてくれることを願っています。

ユーザーがデバイスを同期すると、次のエラーが発生します。

整合性違反のため、行操作を再適用できません。パブリケーション フィルタを確認します。[テーブル = ASSET_DETAIL、操作 = 挿入/更新、RowGuid = {C92038E4-18EA-EE11-4C9F-2952CDECFCC7}] HRESULT 0x80040E2F (28549)

サーバーに移動してこの行とその親行 (テーブルは資産と呼ばれます) を照会すると、有効で正しいように見えます。完全なフィルター ツリーを調査すると (より適切な説明が必要なため)、すべてのデータが正しいように見えます。

DB で確認できることから、サブスクライバーに送られるべきデータは、DB に設定されている参照整合性制約に従います。また、パブリケーション フィルターにも従います。

サブスクライバーでこの問題が発生する理由はありますか? そして、どうすればこれを解決できますか?

また、デバイスに送信されているデータを正確にログに記録することは可能ですか?

よろしくお願いいたします。

モリスリン

4

3 に答える 3

2

これが技術的な答えかどうかはわかりませんが、私たちが抱えていた問題に対する答えです。

同僚が DB 内の FK 関係を削除し、そのことを誰にも話さなかったことがわかりました。そのため、DB とデータを見ていると、すべて問題ありませんでした。

スキーマをテスト バージョンと比較して初めて、何が起こったのかがわかりました。

したがって、この場合の答えは、別の DB でスキーマを検証することでした。

于 2011-02-11T08:23:26.773 に答える
1

コマンドは通常、ストアド プロシージャを介してサブスクライバーに適用されます。サブスクライバーが再接続したときにプロファイラーを実行して、何が実行され、どのパラメーターが使用されているかを確認します。それは何が起こっているかについての手がかりを与えるかもしれません。残念ながら、これ以上具体的には言えません。

于 2011-02-10T12:52:00.367 に答える
0

制約に「Not For Replication」句を使用することと関係がありますか。http://msdn.microsoft.com/en-us/library/ms180843.aspxまたはhttp://msdn.microsoft.com/en-us/library/ms152529.aspxを参照してください。

そのため、たとえば OrderHeaders と OrderLines のレプリケーションを使用すると、レプリケーションによって OrderHeader レコードの前にサブスクライバーに OrderLines が挿入され、違反が発生する可能性があります。

Not For Replication を指定すると、行がパブリッシャーで既に行われているため、レプリケーション システムを介して行が挿入されるときに制約のチェックが行われないことを意味します。

于 2011-07-28T11:32:58.583 に答える