방법: 스냅숏 속성 구성(복제 Transact-SQL 프로그래밍)

복제 저장 프로시저를 사용하여 스냅숏 속성을 프로그래밍 방식으로 정의 및 수정할 수 있습니다. 사용되는 저장 프로시저는 게시 유형에 따라 달라집니다.

스냅숏 또는 트랜잭션 게시를 만들 때 스냅숏 속성을 구성하려면

  • 게시자에서 sp_addpublication을 실행합니다. 이때 @publication에 게시 이름을 지정하고 @repl_freqsnapshot 또는 continuous를 지정하며 다음과 같은 스냅숏 관련 매개 변수를 하나 이상 지정합니다.

    • @alt_snapshot_folder - 이 게시에 대한 스냅숏을 기본 스냅숏 폴더 이외 위치 또는 기본 스냅숏 폴더에 추가된 위치에서 액세스하는 경우 경로를 지정합니다.

    • @compress_snapshot - 대체 스냅숏 폴더의 스냅숏 파일이 Microsoft CAB 파일 형식으로 압축되는 경우 true 값을 지정합니다.

    • @pre_snapshot_script - 초기 스냅숏을 적용하기 전에 초기화하는 동안 구독자에서 실행할 .sql 파일의 이름 및 전체 경로를 지정합니다.

    • @post_snapshot_script - 초기 스냅숏을 적용한 후 초기화하는 동안 구독자에서 실행할 .sql 파일의 이름 및 전체 경로를 지정합니다.

    • @snapshot_in_defaultfolder - 스냅숏을 기본 위치 이외 위치에서만 사용할 수 있는 경우 false 값을 지정합니다.

    게시를 만드는 방법은 방법: 게시 만들기(복제 Transact-SQL 프로그래밍)을 참조하십시오.

병합 게시를 만들 때 스냅숏 속성을 구성하려면

  1. 게시자에서 sp_addmergepublication을 실행합니다. 이때 @publication에 게시 이름을 지정하고 @repl_freqsnapshot 또는 continuous를 지정하며 다음과 같은 스냅숏 관련 매개 변수를 하나 이상 지정합니다.

    • @alt_snapshot_folder - 이 게시에 대한 스냅숏을 기본 스냅숏 폴더 이외 위치 또는 기본 스냅숏 폴더에 추가된 위치에서 액세스하는 경우 경로를 지정합니다.

    • @compress_snapshot - 대체 스냅숏 폴더의 스냅숏 파일이 CAB 파일 형식으로 압축되는 경우 true 값을 지정합니다.

    • @pre_snapshot_script - 초기 스냅숏을 적용하기 전에 초기화하는 동안 구독자에서 실행할 .sql 파일의 이름 및 전체 경로를 지정합니다.

    • @post_snapshot_script - 초기 스냅숏을 적용한 후 초기화하는 동안 구독자에서 실행할 .sql 파일의 이름 및 전체 경로를 지정합니다.

    • @snapshot_in_defaultfolder - 스냅숏을 기본 위치 이외 위치에서만 사용할 수 있는 경우 false 값을 지정합니다.

  2. 게시를 만드는 방법은 방법: 게시 만들기(복제 Transact-SQL 프로그래밍)를 참조하십시오.

기존 스냅숏 또는 트랜잭션 게시의 스냅숏 속성을 수정하려면

  1. 게시 데이터베이스의 게시자에서 sp_changepublication을 실행합니다. 이때 @force_invalidate_snapshot에 값 1을 지정하고 @property에 다음 값 중 하나를 지정합니다.

    • alt_snapshot_folder - @value에도 마찬가지로 대체 스냅숏 폴더의 새 경로를 지정합니다.

    • compress_snapshot - @value에도 마찬가지로 대체 스냅숏 폴더의 스냅숏 파일을 CAB 파일 형식으로 압축할지 여부를 나타내는 true 또는 false 값을 지정합니다.

    • pre_snapshot_script - @value에도 마찬가지로 초기 스냅숏을 적용하기 전에 초기화하는 동안 구독자에서 실행할 .sql 파일의 이름 및 전체 경로를 지정합니다.

    • post_snapshot_script - @value에도 마찬가지로 초기 스냅숏을 적용한 후 초기화하는 동안 구독자에서 실행할 .sql 파일의 이름 및 전체 경로를 지정합니다.

    • snapshot_in_defaultfolder - 마찬가지로 스냅숏을 기본 위치 이외 위치에서만 사용할 수 있는지 여부를 나타내는 true 또는 false 값을 지정합니다.

  2. (옵션) 게시 데이터베이스의 게시자에서 sp_changepublication_snapshot을 실행합니다. 이때 변경할 @publication 및 하나 이상의 일정 또는 보안 자격 증명 매개 변수를 지정합니다.

    보안 정보보안 정보

    가능하면 런타임에 사용자에게 자격 증명을 입력하라는 메시지를 표시하십시오. 자격 증명을 스크립트 파일에 저장해야 하는 경우에는 파일에 무단으로 액세스하지 못하도록 보안을 설정해야 합니다.

  3. 명령 프롬프트에서 복제 스냅숏 에이전트를 실행하거나 스냅숏 에이전트 작업을 시작하여 새 스냅숏을 생성합니다. 자세한 내용은 방법: 초기 스냅숏 만들기(복제 Transact-SQL 프로그래밍)를 참조하십시오.

기존 병합 게시의 스냅숏 속성을 수정하려면

  1. 게시 데이터베이스의 게시자에서 sp_changemergepublication을 실행합니다. 이때 @force_invalidate_snapshot에 값 1을 지정하고 @property에 다음 값 중 하나를 지정합니다.

    • alt_snapshot_folder - @value에도 마찬가지로 대체 스냅숏 폴더의 새 경로를 지정합니다.

    • compress_snapshot - @value에도 마찬가지로 대체 스냅숏 폴더의 스냅숏 파일을 CAB 파일 형식으로 압축할지 여부를 나타내는 true 또는 false 값을 지정합니다.

    • pre_snapshot_script - @value에도 마찬가지로 초기 스냅숏을 적용하기 전에 초기화하는 동안 구독자에서 실행할 .sql 파일의 이름 및 전체 경로를 지정합니다.

    • post_snapshot_script - @value에도 마찬가지로 초기 스냅숏을 적용한 후 초기화하는 동안 구독자에서 실행할 .sql 파일의 이름 및 전체 경로를 지정합니다.

    • snapshot_in_defaultfolder - 마찬가지로 스냅숏을 기본 위치 이외 위치에서만 사용할 수 있는지 여부를 나타내는 true 또는 false 값을 지정합니다.

  2. 명령 프롬프트에서 복제 스냅숏 에이전트를 실행하거나 스냅숏 에이전트 작업을 시작하여 새 스냅숏을 생성합니다. 자세한 내용은 방법: 초기 스냅숏 만들기(복제 Transact-SQL 프로그래밍)를 참조하십시오.

이 예제에서는 대체 스냅숏 폴더 및 압축 스냅숏을 사용하는 게시를 만듭니다.

-- 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'AdventureWorks2008R2'; 
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 [AdventureWorks2008R2]
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