スナップショットの作成および適用
スナップショットは、パブリケーションの作成後に、スナップショット エージェントによって生成されます。スナップショットは、以下の方法で生成できます。
- すぐに生成。既定では、マージ パブリケーションのスナップショットは、パブリケーションの新規作成ウィザードでパブリケーションが作成された後、すぐに生成されます。
- スケジュールで設定した時刻に生成。スケジュールは、パブリケーションの新規作成ウィザードの [スナップショット エージェント] ページで指定するか、ストアド プロシージャまたはレプリケーション管理オブジェクト (RMO) の使用時に指定します。
- 手動で作成。コマンド プロンプトまたは SQL Server Management Studio からスナップショット エージェントを実行します。エージェントの実行の詳細については、「レプリケーション エージェント実行可能ファイルのプログラミング」および「レプリケーション エージェントの起動および停止方法 (SQL Server Management Studio)」を参照してください。
マージ レプリケーションの場合は、スナップショット エージェントが起動するたびにスナップショットが生成されます。トランザクション レプリケーションでは、スナップショットの生成はパブリケーション プロパティ immediate_sync の設定で決まります。プロパティが TRUE に設定されていると (パブリケーションの新規作成ウィザードを使用する際の既定の設定)、スナップショット エージェントを実行するたびにスナップショットが生成され、いつでもスナップショットをサブスクライバに適用できます。プロパティが FALSE に設定されていると (sp_addpublication を使用する場合の既定の設定)、最後にスナップショット エージェントを実行してから新しいサブスクリプションが追加された場合にのみスナップショットが生成されます。サブスクライバは、スナップショット エージェントが完了するまで同期することはできません。
既定では、スナップショットが生成されると、そのスナップショットはディストリビュータ上の既定のスナップショット フォルダに保存されます。スナップショット ファイルは、リムーバブル ディスク、CD-ROM などのリムーバブル メディアや、既定のスナップショット フォルダ以外の場所に保存することもできます。また、格納および転送しやすいようにファイルを圧縮することや、サブスクライバでスナップショットを適用する前または後にスクリプトを実行することもできます。これらのオプションの詳細については、「スナップショット オプション」を参照してください。
パラメータ化されたフィルタを使用するマージ パブリケーションに対するスナップショットの場合は、2 段階の処理でスナップショットが作成されます。まず、パブリッシュされたオブジェクトのレプリケーション スクリプトとスキーマが含まれるスキーマ スナップショットが作成されます。ただしデータは含まれません。次に、スキーマ スナップショットからコピーしたスクリプトとスキーマが含まれるスナップショットと、サブスクリプションのパーティションに属するデータを使用して、各サブスクリプションが初期化されます。詳細については、「パラメータ化されたフィルタを使用したマージ パブリケーションのスナップショット」を参照してください。
パブリッシャで作成され、既定の位置または代替位置に格納されたスナップショットは、サブスクライバに転送して適用することができます。ディストリビューション エージェント (スナップショット レプリケーションおよびトランザクション レプリケーションの場合) またはマージ エージェント (マージ レプリケーションの場合) によって、最初の同期時に、サブスクライバ側のサブスクリプション データベースにスナップショットが転送され、スキーマ ファイルとデータ ファイルが適用されます。サブスクリプションの新規作成ウィザードを使用する場合、既定では、サブスクリプションの作成後すぐに最初の同期が行われます。この動作は、ウィザードの [サブスクリプションの初期化] ページの [次の場合に初期化] オプションによって制御されます。サブスクリプションの初期化後に生成されたスナップショットは、サブスクリプションに再初期化のマークが付けられない限り、サブスクライバに適用されません。詳細については、「サブスクリプションの再初期化」を参照してください。
ディストリビューション エージェントまたはマージ エージェントによる初期スナップショットの適用後、それらのエージェントによって以後の更新とその他のデータ変更が反映されます。スナップショットがディストリビュートされサブスクライバに適用されるときは、初期スナップショットまたは新しいスナップショットを待機しているサブスクライバのみが影響を受けます。そのパブリケーションへの他のサブスクライバ (パブリッシュされたデータへの挿入、更新、削除、またはその他の変更を既に受信中のサブスクライバ) は影響を受けません。
初期スナップショットを作成および適用するには
- SQL Server Management Studio: 初期スナップショットを作成および適用する方法 (SQL Server Management Studio)
- レプリケーション Transact-SQL プログラミング : 初期スナップショットを作成する方法 (レプリケーション Transact-SQL プログラミング)
- RMO プログラミング : 初期スナップショットを作成する方法 (RMO プログラミング)
スナップショット フォルダの既定の場所を表示または変更するには
- SQL Server Management Studio: 既定のスナップショットの場所を指定する方法 (SQL Server Management Studio)
- レプリケーション プログラミング : パブリッシングとディストリビューションを構成する方法 (レプリケーション Transact-SQL プログラミング)
- RMO プログラミング : パブリッシングおよびディストリビューションを構成する方法 (RMO プログラミング)
参照
概念
スナップショットを使用したサブスクリプションの初期化
スナップショット フォルダのセキュリティ
その他の技術情報
sp_addpublication (Transact-SQL)