1

私は SQL Server レプリケーションを初めて使用し、いくつかの変更を既存のレプリケートされた環境にプッシュしました。これは、トランザクション レプリケーションを備えた SQL Server 2005 SP3 です。
新しいテーブルを作成し、既存のテーブルに列を追加し、いくつかの SP を追加しました。これはすべて、発行者データベースで行いました。新しいスナップショットを作成し、サブスクリプションを再初期化しました。新しいテーブルと新しい列が新しいサーバーに複製され、データが正常に同期されましたが、1 回だけです。

直後に、レプリケーション モニターがエラーを報告しています。[ディストリビューターからサブスクライバーの履歴] タブに、「サブクエリが複数の値を返しました」というメッセージが表示されます。試行されたコマンドは...

delete from MSsubscription_articlecolumns
    where artid=89 and
          agent_id = (
              select id from MSsubscription_agents
                  where update_mode > 0 and
                        UPPER(publisher) = UPPER('xxxx') and
                        publisher_db = N'xxxx' and
                        publication = N'xxxxx'
              ) end

サブスクリプション エージェントが重複するのはなぜですか? これを修正するにはどうすればよいですか? 助けてくれてありがとう。

4

1 に答える 1

1

MSsubscription_agentsテーブルのデータを手動で編集することで、問題を解決できました。同じ発行元、db、および発行名の2つのレコードがありました。レコードの1つを削除する代わりに、古いレコードのupdate_modeを0に変更しました。これにより、元の質問の問題ステートメントからそのレコードが除外されました。その後、レプリケーションプロセスはそのステートメントを通過し、正しく実行できるようになりました。ありがとう。

于 2013-02-19T21:36:15.763 に答える