1

SQL Server 2005 でトランザクション レプリケーションをセットアップし、レプリケーションのセットアップ時に作成された DDL トリガーを無効にしました。VARCHARパブリッシャーの列をサブスクライバーの列に変更したため、(何が起こるかを理解するために) 少し遊んだ後、トランザクションは壊れていINTます。このバグのあるトランザクションをスキップするのに役立つ2つの手順を見つけました

EXEC sp_helpsubscriptionerrors
    @publisher='DB1',@publisher_db='repl_test',@publication='repl_test_table',
    @subscriber='DB2',@subscriber_db='repl_test'

これにより、エラーを確認できる結果セットが得られます (への変換のVARCHAR失敗INT)

id time                    [...] error_code error_text                                             xact_seqno
24 2012-02-23 08:33:35.313 [...] 8114       Fehler beim Konvertieren des varchar-Datentyps in int. 0x00139791000CC79C000600000000
24 2012-02-23 08:33:35.310 [...] 8114       Fehler beim Konvertieren des varchar-Datentyps in int. 0x00139791000CC79C000600000000
[...]

そしてxact_seqno、次のステップで次の手順を実行するために、結果 (0x00139791000CC79C000600000000) を使用します

EXEC sp_setsubscriptionxactseqno
    @publisher='DB1',@publisher_db='repl_test',@publication='repl_test_table',
    @xact_seqno=0x00139791000CC79C000600000000

それは言う:

エラー 20017 - サブスクライバーにサブスクリプションが存在しません。

は?

4

2 に答える 2

2

ああ、内部コードを見てみるとsp_setsubscriptionxactseqno、この手順はサブスクリプション データベースで実行する必要があることがわかります (実行する必要があるデータベースではありませdistribution) sp_helpsubscriptionerrors...しかし、これは MSDN に記載されていません。

于 2012-02-23T07:50:52.037 に答える
0

サブスクライバで sp_setsubscriptionxactseqno を実行するとうまくいきましたか?

ディストリビューション エージェント パラメーター-SkipErrors 8114を使用して、このエラーの種類を一時的にスキップすることもできます。

トランザクション レプリケーションでのエラーのスキップ

于 2012-02-23T08:41:49.767 に答える