適用対象:SQL Server
Azure SQL Managed Instance
スナップショットのプロパティは、レプリケーションのストアド プロシージャを使用し、プログラムから定義および変更できます。使用するストアド プロシージャは、パブリケーションの種類によって異なります。
スナップショットまたはトランザクション パブリケーションを作成するときにスナップショットのプロパティを構成するには
パブリッシャーで sp_addpublicationを実行します。
@publicationにパブリケーション名を、 に snapshot と@repl_freqのいずれかの値を指定し、次のスナップショット関連のパラメーターを少なくとも 1 つ指定します。-
@alt_snapshot_folder- このパブリケーションのスナップショットが、既定のスナップショット フォルダー以外の場所、または既定のスナップショット フォルダーに追加された場所からアクセスされる場合のパスを指定します。 -
@compress_snapshot- 代替スナップショット フォルダー内のスナップショット ファイルを Microsoft CAB ファイル形式で圧縮する場合は true を指定します。 -
@pre_snapshot_script- 初期化時、初期スナップショットが適用される前にサブスクライバーで実行される .sql ファイルのファイル名と完全パスを指定します。 -
@post_snapshot_script- 初期化時、初期スナップショットが適用される後にサブスクライバーで実行される .sql ファイルのファイル名と完全パスを指定します。 -
@snapshot_in_defaultfolder- スナップショットが既定以外の場所でのみ使用できる場合は、値に false を指定します。
パブリケーションの作成の詳細については、「 Create a Publication」を参照してください。
-
マージ パブリケーションを作成するときにスナップショットのプロパティを構成するには
パブリッシャーで sp_addmergepublicationを実行します。
@publicationにパブリケーション名を、 に snapshot と@repl_freqのいずれかの値を指定し、次のスナップショット関連のパラメーターを少なくとも 1 つ指定します。- alt_snapshot_folder - このパブリケーションのスナップショットが、既定のスナップショット フォルダー以外の場所、または既定のスナップショット フォルダーに追加された場所からアクセスされる場合のパスを指定します。
-
@compress_snapshot- 代替スナップショット フォルダー内のスナップショット ファイルを CAB ファイル形式で圧縮する場合は true を指定します。 -
@pre_snapshot_script- 初期化時、初期スナップショットが適用される前にサブスクライバーで実行される .sql ファイルのファイル名と完全パスを指定します。 -
@post_snapshot_script- 初期化時、初期スナップショットが適用される後にサブスクライバーで実行される .sql ファイルのファイル名と完全パスを指定します。 -
@snapshot_in_defaultfolder- スナップショットが既定以外の場所でのみ使用できる場合は、値に false を指定します。
パブリケーションの作成の詳細については、「 Create a Publication」を参照してください。
既存のスナップショット パブリケーションまたはトランザクション パブリケーションのスナップショット プロパティを変更する
パブリッシャー側のパブリケーション データベースに対して sp_changepublicationを実行します。
@force_invalidate_snapshotには 1 を指定し、@propertyには次のいずれかの値を指定します。-
alt_snapshot_folder -
@valueに代替スナップショットへの新しいパスも指定します。 -
compress_snapshot - 代替スナップショット フォルダー内のスナップショット ファイルを CAB ファイル形式で圧縮するかどうかを示すには、 に true または
@valueも指定します。 -
pre_snapshot_script -
@valueについても、初期化時に初期スナップショットが適用される前に Subscriber で実行される .sql ファイルのファイル名とフル パスを指定します。 -
post_snapshot_script -
@valueに対しても、初期化時に初期スナップショットの適用後にサブスクライバーで実行される .sql ファイルのファイル名と完全パスを指定します。 - snapshot_in_defaultfolder - スナップショットが既定以外の場所でのみ利用可能かどうかを示すために、true または false のいずれかの値も指定します。
-
alt_snapshot_folder -
(省略可) パブリッシャーのパブリケーション データベースで sp_changepublication_snapshotを実行します。
@publicationを指定し、変更の対象となる、スケジュールまたはセキュリティ資格情報関連のパラメーターを少なくとも 1 つ指定します。重要
可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 スクリプト ファイルに資格情報を格納する必要がある場合は、不正アクセスを防ぐために、ファイルを保護します。
コマンド プロンプトから Replication スナップショット エージェント を実行するか、スナップショット エージェント ジョブを起動して新しいスナップショットを生成します。 詳しくは、「 初期スナップショットの作成および適用」をご覧ください。
既存のマージ パブリケーションに対してスナップショットのプロパティを変更するには
パブリッシャー側のパブリケーション データベースに対して sp_changemergepublicationを実行します。
@force_invalidate_snapshotには 1 を指定し、@property**には次のいずれかの値を指定します。-
alt_snapshot_folder -
@valueに代替スナップショットへの新しいパスも指定します。 -
compress_snapshot - 代替スナップショット フォルダー内のスナップショット ファイルを CAB ファイル形式で圧縮するかどうかを示すには、 に true または
@valueも指定します。 -
pre_snapshot_script -
@valueについても、初期化時に初期スナップショットが適用される前にサブスクライバーで実行される .sql ファイルのファイル名とフル パスを指定します。 -
post_snapshot_script -
@valueについても、初期化時に初期スナップショットの適用後にサブスクライバーで実行される .sql ファイルのファイル名とフル パスを指定します。 - snapshot_in_defaultfolder - また、スナップショットが既定以外の場所でのみ利用可能かどうかを示すために、true または false のいずれかの値を指定します。
-
alt_snapshot_folder -
コマンド プロンプトから Replication スナップショット エージェント を実行するか、スナップショット エージェント ジョブを起動して新しいスナップショットを生成します。 詳しくは、「 初期スナップショットの作成および適用」をご覧ください。
例
次の例では、代替スナップショット フォルダーと圧縮スナップショットを使用したパブリケーションを作成します。
-- 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'AdventureWorks2022';
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