スナップショット適用前および適用後のスクリプトの実行

スナップショットが適用される前または後に、スクリプトを指定してサブスクライバで実行できます。スクリプトは、各サブスクライバでのログインの作成やスキーマ (オブジェクト所有者) の作成など、さまざまな理由で使用できます。

各スクリプトに対してファイルの場所を指定すると、スナップショットの処理が行われるたびに、スナップショット エージェントはスクリプト ファイルを現在のスナップショット フォルダにコピーします。ディストリビューション エージェントまたはマージ エージェントは、スナップショットを適用するときに、レプリケートされたオブジェクト スクリプトの前にプリスナップショット スクリプトを実行します。ディストリビューション エージェントまたはマージ エージェントは、他のすべてのレプリケートされたオブジェクト スクリプトおよびデータが適用された後にポストスナップショット スクリプトを実行します。スナップショットの適用が完了し、スクリプト ファイルが正常に実行された後、スクリプト ファイルはサブスクライバ上の作業ディレクトリから削除されます。

スクリプトは、sqlcmd ユーティリティを起動することで実行されます。スクリプトを配置する前に、sqlcmd を使用して実行し、想定どおりに実行されることを確認します。スナップショットが適用される前後に実行されるスクリプトの内容は、繰り返し使用できる必要があります。たとえば、スクリプト内でテーブルを作成する場合、最初にテーブルの存在を確認し、そのテーブルが存在する場合に適切な動作を行う必要があります。既にスクリプトが適用されているサブスクリプションを再初期化する必要がある場合、スクリプトは繰り返し使用できる必要があります。再初期化中に新しいスナップショットを適用すると、そのスクリプトが再度適用されるためです。

スナップショット ファイルを圧縮し、Microsoft CAB ファイル形式にする場合は、スクリプトも圧縮され、CAB ファイルに格納されます。圧縮スナップショット ファイルがサブスクライバに転送され、サブスクライバ上の作業ディレクトリで圧縮解除された後は、プリスナップショット スクリプトとして指定されたスクリプトが実行されます。同じように、ポストスナップショット スクリプトは、スナップショット適用の最後のステップとしてサブスクライバで解凍および実行されます。

重要な注意事項重要

プッシュ サブスクリプションを使用し、ディストリビュータで SQL Server 2000 以降が実行されている場合は、Microsoft SQL Server 7.0 を実行しているサブスクライバにスナップショットを適用するときにスクリプトを実行できます。プル サブスクリプションを使用している場合は、SQL Server 7.0 を実行しているサブスクライバにスナップショットを適用するときにスクリプトを実行できません。

スナップショットが適用される前および後にスクリプトを実行するには