同期中にスクリプトを実行する方法 (レプリケーション Transact-SQL プログラミング)
レプリケーションでは、トランザクション パブリケーションおよびマージ パブリケーションのサブスクライバに対し、要求時にスクリプトを実行できます。スクリプトはレプリケーションの作業ディレクトリにコピーされ、サブスクライバ側で sqlcmd を使って適用されます。トランザクション パブリケーションのサブスクリプションに対してスクリプトを適用しているときにエラーが発生した場合、既定では、ディストリビューション エージェントの実行が停止します。レプリケーションのストアド プロシージャを使用すると、指定した Transact-SQL スクリプトをプログラムから実行できます。
スナップショット、トランザクション、マージ パブリケーションのすべてのサブスクライバに対して実行するスクリプトを指定するには
要求時に実行する Transact-SQL スクリプトを作成およびテストします。
スクリプト ファイルを、パブリケーションのスナップショット エージェントがアクセスできる場所に保存します。
パブリッシャ側のパブリケーション データベースに対して、sp_addscriptexec (Transact-SQL) を実行します。@publication を指定し、手順 2. で作成したスクリプト ファイル名を完全 UNC パスで @scriptfile に指定して、さらに、次のいずれかの値を @skiperror に指定します。
- 0 - エラーが発生した場合、エージェントがスクリプトの実行を停止します。
- 1 - エラーが発生した場合、エージェントによってエラー ログが記録され、スクリプトの実行が継続されます。
指定したスクリプトは、エージェントが次にサブスクリプションを同期するときに、各サブスクライバで実行されます。