2012-03-29 40 views
1

トランザクションレプリケーションをセットアップし、帯域幅制限のためにバックアップからの初期化を許可しました(スナップショットが生成されないため)。今度は、データベースにデータを挿入するアプリケーションが起動されたときに、パブリケーションデータベースでこのエラーが発生します(短時間実行された後、エラーで停止します)。レプリケーションモニタにはエラーは表示されないため、パブリケーションとサブスクリプションデータベースの間に矛盾はありません。また、このテーブルはPKとして日付スタンプに依存しているため、自動生成されたID(アイデンティティ列を使用する)についてもそれは問題ではありません。エラーは次のとおりです。MSSQL - PK制約のレプリケーションと違反

System.Data.SqlClient.SqlException:PRIMARY KEY制約 ''の違反です。オブジェクト 'dbo'に重複キーを挿入できません。ステートメントは終了されました。

レプリケーションのセットアップによって、ソース/パブリケーションデータベースが何らかの処理を行ったことがありますか?これは、サブスクライバデータベースへの待ち時間が長いために発生する可能性がありますか?レプリケーションモニタでエラーが表示されないので、レプリケーション設定の継続中にこのエラーが発生したことは確かではありません。

このトラブルシューティングを行うにはどうすればよいですか?

答えて

0

1.必ず、PK

前に、レプリケーションの設定を使用して作成された複製されているテーブル/記事:

CREATE TABLE [dbo].[mytable](
    [mytableID] [BIGINT] IDENTITY(1,1) NOT NULL, 

後:あなたが持っている

CREATE TABLE [dbo].[mytable](
    [mytableID] [BIGINT] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, 

同じように外部キーにする

2.レプリケーションモニタは、パブリケーションを選択し、あなたにエラーメッセージ

  • を表示する必要があります。
  • 右のウィンドウでサブスクリプションを選択し、サブスクリプションウィンドウ がポップアップします。
  • ディストリビュータをサブスクライバーに選択 履歴(サブスクリプションをプル型では使用できない可能性があります。 はサブスクライブするサーバーに移動する必要があります)。
  • このタブには、ディストリビューションエージェントのトランザクションが表示されます。 エージェントプロファイルパラメータ "HistoryVerboseLevel"を2に変更して詳細を取得できます。それを行う場合は、ディストリビューションエージェントを停止して開始して、変更内容を確認してください。これは、複製データを失うことなく実行できます。
関連する問題