環境: SQL Server 2005のSP2(9.0.3077) トランザクションパブリケーション(生産とベータ版)SQL Server 2005のレプリケーション
私は同じ記事の一部を使用する2つの異なるレプリケーションパブリケーションを設定している状況があります。これらの出版物のそれぞれは、別のマシン上で加入者にフィードします。これらの共有記事の1つは表です。一定の時間間隔で、この表のレコードの多くは老化し、もはや必要なくなります。この時点で、レコードを削除するストアドプロシージャが呼び出されます。
リソースを節約し、サブスクライバの待ち時間を改善するために、このストアドプロシージャのレプリケートプロパティをデフォルトの「ストアドプロシージャ定義のみ」ではなく「ストアドプロシージャの実行」に設定しました。これにより、ストアドプロシージャが2,000,000件以上のレコードを削除するときに、これらのレコードはサブスクライバに複製されません。代わりに、ストアド・プロシージャの実行がレプリケートされ、サブスクライバ上の同じレプリケート・ストアド・プロシージャが実行され、同じ2,000,000以上の行が削除されます。
私が持っている問題は、私の2番目の出版です。このタイプの動作は必要ありませんでしたので、ストアドプロシージャのアーティクルプロパティを「ストアドプロシージャ定義のみ」に設定し、他のサブスクライバの行を削除するためのレプリケーションを期待していましたが、そうではありませんでした。加入者のテーブルはレコードを取得し続けていました。だから、それを修正するために、私は記事プロパティを "Execution ..."に設定し、それを良いと呼んだ。これはおそらくベータ版がプロダクションにマッチする最高のソリューションですが、出版物のプロパティが互いに独立して動作する必要があるため、まだまだ気になります。
質問:他の出版物の「ストアドプロシージャ定義のみ」に設定されていても、「ストアドプロシージャの実行」アーティクルプロパティが優先され、他のパブリケーションに適用されるのはなぜですか?
ここでStackoverlfowを再生したくないのですが、この質問は高度なSQL Serverレプリケーションクエリです。 Microsoft SQL Serverレプリケーションフォーラムに投稿してからこの投稿を再投稿することをお勧めします。 –
私は現在、いくつかのレプリケーション作業に取り組んでいますが、私はJohnに同意します。これはかなり難しい質問です。がんばろう。 :)誰かがquerytimeout.comを作るまで待たなければならないかもしれない。 –
ヒラリー・コッターはよく知られているレプリケーションエキスパートであり、SQL Serverレプリケーションフォーラムを見ている。http://social.msdn.microsoft.com/Forums/en-US/sqlreplication –