다음을 통해 공유


스냅샷 속성 구성(복제 Transact-SQL 프로그래밍)

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

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

  1. 게시자에서 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 값을 지정합니다.

    게시를 만드는 방법은 Create a Publication를 참조하세요.

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

  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. 게시를 만드는 방법은 Create a Publication를 참조하세요.

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

  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. 명령 프롬프트에서 Replication Snapshot Agent 를 실행하거나 스냅샷 에이전트 작업을 시작하여 새 스냅샷을 생성합니다. 자세한 내용은 Create and Apply the Initial Snapshot을 참조하세요.

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

  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. 명령 프롬프트에서 Replication Snapshot Agent 를 실행하거나 스냅샷 에이전트 작업을 시작하여 새 스냅샷을 생성합니다. 자세한 내용은 Create and Apply the Initial Snapshot을 참조하세요.

예제

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

-- 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

참고 항목

대체 스냅샷 폴더 위치
압축된 스냅샷
스냅샷 적용 전후에 스크립트 실행
Replication System Stored Procedures Concepts
FTP를 통해 스냅샷 전송
게시 및 아티클 속성 변경