次の方法で共有


スナップショットのプロパティの構成 (レプリケーション Transact-SQL プログラミング)

スナップショット プロパティは、レプリケーション ストアド プロシージャを使用してプログラムで定義および変更できます。使用されるストアド プロシージャはパブリケーションの種類によって異なります。

スナップショットまたはトランザクション パブリケーションを作成する際に、スナップショットのプロパティを構成するには

  1. パブリッシャーで、 sp_addpublicationを実行します。 @publicationに対するパブリケーション名、スナップショットまたは連続のいずれかの値を@repl_freqに指定し、次のスナップショット関連パラメーターの中から1つ以上を指定します。

    • @alt_snapshot_folder - このパブリケーションのスナップショットが、スナップショットの既定のフォルダーではなく、またはスナップショットの既定のフォルダーに加えてその場所からアクセスされる場合は、パスを指定します。

    • @compress_snapshot - 代替スナップショット フォルダー内のスナップショット ファイルが Microsoft CAB ファイル形式で圧縮されている場合は 、値 true を指定します。

    • @pre_snapshot_script - 初期スナップショットが適用される前に、初期化中にサブスクライバーで実行される .sql ファイルのファイル名と完全パスを指定します。

    • @post_snapshot_script - 初期スナップショットの適用後に、初期化中にサブスクライバーで実行される .sql ファイルのファイル名と完全パスを指定します。

    • @snapshot_in_defaultfolder - スナップショットが既定以外の場所でのみ使用できる場合は 、false の 値を指定します。

    パブリケーションの作成の詳細については、「パブリケーションの 作成」を参照してください。

マージ パブリケーションの作成時にスナップショット プロパティを構成するには

  1. パブリッシャーで、 sp_addmergepublicationを実行します。 @publicationのパブリケーション名を指定し、@repl_freqにはスナップショットまたは連続のいずれかの値を設定し、次のスナップショット関連パラメーターの1つ以上を指定します。

    • @alt_snapshot_folder - このパブリケーションのスナップショットが、スナップショットの既定のフォルダーではなく、またはスナップショットの既定のフォルダーに加えてその場所からアクセスされる場合は、パスを指定します。

    • @compress_snapshot - 代替スナップショット フォルダー内のスナップショット ファイルが CAB ファイル形式で圧縮されている場合は 、値 true を指定します。

    • @pre_snapshot_script - 初期スナップショットが適用される前に、初期化中にサブスクライバーで実行される .sql ファイルのファイル名と完全パスを指定します。

    • @post_snapshot_script - 初期スナップショットの適用後に、初期化中にサブスクライバーで実行される .sql ファイルのファイル名と完全パスを指定します。

    • @snapshot_in_defaultfolder - スナップショットが既定以外の場所でのみ使用できる場合は 、false の 値を指定します。

  2. パブリケーションの作成の詳細については、「パブリケーションの 作成」を参照してください。

既存のスナップショットまたはトランザクション パブリケーションのプロパティを変更するには

  1. パブリッシャー側のパブリケーション データベースで、 sp_changepublicationを実行します。 @force_invalidate_snapshotには 1、@propertyには次のいずれかの値を指定します。

    • alt_snapshot_folder -also@valueの代替スナップショット フォルダーへの新しいパスを指定 します

    • compress_snapshot - 代替スナップショット フォルダー内のスナップショット ファイルが CAB ファイル形式で圧縮されているかどうかを示すために、@valuetrue または false の値も指定します。

    • pre_snapshot_script - @value には、初期スナップショットが適用される前にサブスクライバーの初期化中に実行される.sqlファイルのファイル名と完全なパスを指定します。

    • post_snapshot_script - @value の場合は、初期スナップショットの適用後にサブスクライバーで実行される .sql ファイルのファイル名と完全パスも指定します。

    • snapshot_in_defaultfolder - スナップショットが既定以外の場所でのみ使用できるかどうかを示すために 、true または false の値も指定します。

  2. (省略可能)パブリッシャー側のパブリケーション データベースで、 sp_changepublication_snapshotを実行します。 @publicationと、変更するスケジュールまたはセキュリティ資格情報のパラメーターを 1 つ以上指定します。

    重要

    可能な場合は、実行時にセキュリティ資格情報の入力をユーザーに求めます。 スクリプト ファイルに資格情報を格納する必要がある場合は、未承認のアクセスを防ぐためにファイルをセキュリティで保護する必要があります。

  3. コマンド プロンプトから レプリケーション スナップショット エージェント を実行するか、スナップショット エージェント ジョブを開始して新しいスナップショットを生成します。 詳細については、「 初期スナップショットの作成と適用」を参照してください。

既存のマージ パブリケーションのスナップショット プロパティを変更するには

  1. パブリッシャー側のパブリケーション データベースで、 sp_changemergepublicationを実行します。 @force_invalidate_snapshotには 1、@propertyには次のいずれかの値を指定します。

    • alt_snapshot_folder -also@valueの代替スナップショット フォルダーへの新しいパスを指定 します

    • compress_snapshot - 代替スナップショット フォルダー内のスナップショット ファイルが CAB ファイル形式で圧縮されているかどうかを示すために、@valuetrue または false の値も指定します。

    • pre_snapshot_script - 初期化中に、初期スナップショットが適用される前にサブスクライバーで実行される.sql ファイルについて、@value の箇所に、ファイル名とフルパスを指定します。

    • post_snapshot_script - @value の場合は、初期スナップショットの適用後にサブスクライバーで実行される .sql ファイルのファイル名と完全パスも指定します。

    • snapshot_in_defaultfolder - スナップショットが既定以外の場所でのみ使用できるかどうかを示すために 、true または false の値も指定します。

  2. コマンド プロンプトから レプリケーション スナップショット エージェント を実行するか、スナップショット エージェント ジョブを開始して新しいスナップショットを生成します。 詳細については、「 初期スナップショットの作成と適用」を参照してください。

次の使用例は、代替スナップショット フォルダーと圧縮スナップショットを使用するパブリケーションを作成します。

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
DECLARE @snapshot_share AS sysname;
SET @publicationDB = N'AdventureWorks2012'; 
SET @publication = N'AdvWorksSalesOrdersMergeAltSnapshot'; 
SET @article = N'SpecialOffer';
SET @owner = N'Sales';
SET @snapshot_share = '\\' + $(InstanceName) + '\AltSnapshotFolder';

-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname=N'merge publish',
    @value = N'true';

-- Create new merge publication with an alternate snapshot location. 
USE [AdventureWorks]
EXEC sp_addmergepublication 
-- required parameters
    @publication = @publication, 
    @snapshot_in_defaultfolder = N'false',
    @alt_snapshot_folder = @snapshot_share,
    @compress_snapshot = N'true';

-- Create the snapshot job for the publication.
EXEC sp_addpublication_snapshot 
    @publication = @publication,
    @job_login = $(Login),
    @job_password = $(Password);

-- Add an article.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_object = @article, 
    @type = N'table', 
    @source_owner = @owner, 
    @destination_owner = @owner;

-- Start the snapshot job.
EXEC sp_startpublication_snapshot
    @publication = @publication;
GO

こちらもご覧ください

代替スナップショット フォルダーの場所
圧縮スナップショット
スナップショットが適用される前と後にスクリプトを実行する
レプリケーション システム ストアド プロシージャの概念
FTP 経由でスナップショットを転送する
パブリケーションとアーティクルのプロパティを変更する