FTP를 통해 스냅숏 배달

이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server 2012에서 FTP를 통해 스냅숏을 배달하는 방법에 대해 설명합니다.

항목 내용

  • 시작하기 전에:

    제한 사항

    필수 구성 요소

    보안

  • 다음을 사용하여 FTP를 통해 스냅숏을 배달하려면

    SQL Server Management Studio

    Transact-SQL

시작하기 전에

제한 사항

  • 스냅숏 에이전트는 지정한 디렉터리에 대해 쓰기 권한이 있어야 하며 배포 에이전트 또는 병합 에이전트는 읽기 권한이 있어야 합니다. 끌어오기 구독을 사용하는 경우 공유 디렉터리를 \\ftpserver\home\snapshots와 같이 UNC(Universal Naming Convention) 경로로 지정해야 합니다. 자세한 내용은 스냅숏 폴더 보안 설정을 참조하십시오.

필수 구성 요소

  • FTP(파일 전송 프로토콜)를 사용하여 스냅숏 파일을 전송하려면 먼저 FTP 서버를 구성해야 합니다. 자세한 내용은 Microsoft 인터넷 정보 서비스(IIS) 설명서를 참조하십시오.

보안

인터넷을 통해 FTP 스냅숏 배달을 사용하는 경우에는 보안 향상을 위해 VPN(가상 사설망)을 구현하는 것이 좋습니다. 자세한 내용은 VPN을 사용하여 인터넷을 통해 데이터 게시을 참조하십시오.

FTP 서버에 익명 로그인을 허용하지 않는 것이 가장 좋은 보안 방법입니다. 스냅숏 에이전트는 지정한 디렉터리에 대해 쓰기 권한이 있어야 하며 배포 에이전트 또는 병합 에이전트는 읽기 권한이 있어야 합니다. 끌어오기 구독을 사용하는 경우 공유 디렉터리를 \\ftpserver\home\snapshots와 같이 UNC(Universal Naming Convention) 경로로 지정해야 합니다. 자세한 내용은 스냅숏 폴더 보안 설정을 참조하십시오.

가능한 경우 런타임에 사용자에게 자격 증명을 입력하라는 메시지를 표시합니다. 스크립트 파일에 자격 증명을 저장하는 경우에는 이 파일에 보안을 설정해야 합니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]

SQL Server Management Studio 사용

FTP 서버를 구성한 후 게시 속성 - <Publication> 대화 상자에서 이 서버에 대한 디렉터리 및 보안 정보를 지정합니다. 이 대화 상자에 액세스하는 방법은 게시 속성 보기 및 수정을 참조하십시오.

FTP 정보를 지정하려면

  1. 게시 속성 - <Publication> 대화 상자의 다음 두 페이지 중 하나에서 구독자가 FTP(파일 전송 프로토콜)를 사용하여 스냅숏 파일을 다운로드하도록 허용을 선택합니다.

    • FTP 스냅숏 페이지 - Microsoft SQL Server 2005 이전 버전을 실행하는 구독자에 대한 병합 게시와 스냅숏 및 트랜잭션 게시의 경우

    • FTP 스냅숏 및 인터넷 페이지 - SQL Server 2005 이후 버전을 실행하는 게시자의 병합 게시의 경우

  2. FTP 서버 이름, 포트 번호, FTP 루트 폴더에서의 경로, 로그인암호에 대한 값을 지정합니다.

    예를 들어 FTP 서버 루트가 \\ftpserver\home이고 스냅숏을 \\ftpserver\home\snapshots에 저장하려면 FTP 루트 폴더에서의 경로 속성에 대해 \snapshots\ftp를 지정합니다. 복제는 스냅숏 파일을 만들 때 스냅숏 폴더 경로에 'ftp'를 추가합니다.

  3. 스냅숏 에이전트가 스냅숏 파일을 2단계에서 지정한 디렉터리에 쓰도록 지정합니다. 예를 들어 스냅숏 에이전트가 스냅숏 파일을 \\ftpserver\home\snapshots\ftp에 쓰도록 하려면 다음 두 위치 중 하나에 \\ftpserver\home\snapshots 경로를 지정해야 합니다.

    • 이 게시와 연결된 배포자의 기본 스냅숏 위치

      기본 스냅숏 위치 지정 방법은 기본 스냅숏 위치 지정(SQL Server Management Studio)을 참조하십시오.

    • 이 게시의 대체 스냅숏 폴더 위치. 대체 위치는 스냅숏이 압축된 경우에 필요합니다.

      게시 속성 - <Publication> 대화 상자의 스냅숏 페이지에서 다음 폴더에 파일 보관 입력란에 경로를 입력합니다. 대체 스냅숏 폴더 위치에 대한 자세한 내용은 대체 스냅숏 폴더 위치를 참조하십시오.

  4. 확인을 클릭합니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]

Transact-SQL 사용

FTP 서버에서 스냅숏 파일을 사용할 수 있게 해주는 옵션을 설정할 수 있으며, 이러한 FTP 설정은 복제 저장 프로시저를 사용하여 프로그래밍 방식으로 수정할 수 있습니다. 사용되는 절차는 게시 유형에 따라 달라집니다. FTP 스냅숏 배달은 끌어오기 구독에만 사용됩니다.

스냅숏 또는 트랜잭션 게시에 대한 FTP 스냅숏 배달을 설정하려면

  • 게시 데이터베이스의 게시자에서 sp_addpublication을 실행합니다. @publication을 지정하고 @enabled_for_internet에 true 값을 지정하고 다음 매개 변수에 적절한 값을 지정합니다.

    • @ftp_address - 스냅숏을 배달하는 데 사용되는 FTP 서버의 주소입니다.

    • (옵션) @ftp_port - FTP 서버에서 사용되는 포트입니다.

    • (옵션) @ftp_subdirectory - FTP 로그온에 할당된 기본 FTP 디렉터리의 하위 디렉터리입니다. 예를 들어 FTP 서버 루트가 \\ftpserver\home이고 스냅숏을 \\ftpserver\home\snapshots에 저장하려면 @ftp_subdirectory\snapshots\ftp를 지정합니다. 복제는 스냅숏 파일을 만들 때 스냅숏 폴더 경로에 'ftp'를 추가합니다.

    • (옵션) @ftp_login - FTP 서버에 연결할 때 사용되는 로그인 계정입니다.

    • (옵션) @ftp_password - FTP 로그인에 대한 암호입니다.

    이렇게 하면 FTP를 사용하는 게시가 만들어집니다. 자세한 내용은 게시 만들기를 참조하십시오.

병합 게시에 대한 FTP 스냅숏 배달을 설정하려면

  • 게시 데이터베이스의 게시자에서 sp_addmergepublication을 실행합니다. @publication을 지정하고 @enabled_for_internet에 true 값을 지정하고 다음 매개 변수에 적절한 값을 지정합니다.

    • @ftp_address - 스냅숏을 배달하는 데 사용되는 FTP 서버의 주소입니다.

    • (옵션) @ftp_port - FTP 서버에서 사용되는 포트입니다.

    • (옵션) @ftp_subdirectory - FTP 로그온에 할당된 기본 FTP 디렉터리의 하위 디렉터리입니다. 예를 들어 FTP 서버 루트가 \\ftpserver\home이고 스냅숏을 \\ftpserver\home\snapshots에 저장하려면 @ftp_subdirectory\snapshots\ftp를 지정합니다. 복제는 스냅숏 파일을 만들 때 스냅숏 폴더 경로에 'ftp'를 추가합니다.

    • (옵션) @ftp_login - FTP 서버에 연결할 때 사용되는 로그인 계정입니다.

    • (옵션) @ftp_password - FTP 로그인에 대한 암호입니다.

    이렇게 하면 FTP를 사용하는 게시가 만들어집니다. 자세한 내용은 게시 만들기를 참조하십시오.

FTP 스냅숏 배달을 사용하는 스냅숏 또는 트랜잭션 게시에 대한 끌어오기 구독을 만들려면

  1. 구독 데이터베이스의 구독자에서 sp_addpullsubscription을 실행합니다. @publisher@publication을 지정합니다.

    • 구독 데이터베이스의 구독자에서 sp_addpullsubscription_agent를 실행합니다. @publisher, @publisher_db, @publication을 지정하고, @job_login@job_password에 게시자에서 배포 에이전트가 실행되는 Microsoft Windows 자격 증명을 지정하고, @use_ftp에 true 값을 지정합니다.
  2. 게시 데이터베이스의 게시자에서 sp_addsubscription을 실행하여 끌어오기 구독을 등록합니다. 자세한 내용은 끌어오기 구독 만들기를 참조하십시오.

FTP 스냅숏 배달을 사용하는 병합 게시에 대한 끌어오기 구독을 만들려면

  1. 구독 데이터베이스의 구독자에서 sp_addmergepullsubscription을 실행합니다. @publisher@publication을 지정합니다.

  2. 구독 데이터베이스의 구독자에서 sp_addmergepullsubscription_agent를 실행합니다. @publisher, @publisher_db, @publication을 지정하고, @job_login@job_password에 구독자에서 배포 에이전트가 실행되는 Windows 자격 증명을 지정하고, @use_ftp에 true 값을 지정합니다.

  3. 게시 데이터베이스의 게시자에서 sp_addmergesubscription을 실행하여 끌어오기 구독을 등록합니다. 자세한 내용은 끌어오기 구독 만들기를 참조하십시오.

스냅숏 또는 트랜잭션 게시에 대한 하나 이상의 FTP 스냅숏 배달 설정을 변경하려면

  1. 게시 데이터베이스의 게시자에서 sp_changepublication을 실행합니다. @property에 다음 중 한 가지 값을 지정하고, 이 설정의 새 값을 @value에 지정합니다.

    • ftp_address - 스냅숏을 배달하는 데 사용되는 FTP 서버의 주소입니다.

    • ftp_port - FTP 서버에서 사용되는 포트입니다.

    • ftp_subdirectory - FTP 스냅숏에 사용되는 기본 FTP 디렉터리의 하위 디렉터리입니다.

    • ftp_login - FTP 서버에 연결하는 데 사용되는 로그인입니다.

    • ftp_password - FTP 로그인에 대한 암호입니다.

  2. (옵션) 변경되는 각 FTP 설정에 대해 1단계를 반복합니다.

  3. (옵션) FTP 스냅숏 배달을 해제하려면 게시 데이터베이스의 게시자에서 sp_changepublication을 실행합니다. @property에 enabled_for_internet 값, @value에 false 값을 지정합니다.

병합 게시에 대한 FTP 스냅숏 배달 설정을 변경하려면

  1. 게시 데이터베이스의 게시자에서 sp_changemergepublication을 실행합니다. @property에 다음 중 한 가지 값을 지정하고, 이 설정의 새 값을 @value에 지정합니다.

    • ftp_address - 스냅숏을 배달하는 데 사용되는 FTP 서버의 주소입니다.

    • ftp_port - FTP 서버에서 사용되는 포트입니다.

    • ftp_subdirectory - FTP 스냅숏에 사용되는 기본 FTP 디렉터리의 하위 디렉터리입니다.

    • ftp_login - FTP 서버에 연결하는 데 사용되는 로그인입니다.

    • ftp_password - FTP 로그인에 대한 암호입니다.

  2. (옵션) 변경되는 각 FTP 설정에 대해 1단계를 반복합니다.

  3. (옵션) FTP 스냅숏 배달을 해제하려면 게시 데이터베이스의 게시자에서 sp_changemergepublication을 실행합니다. @propertyenabled_for_internet 값, @value에 false 값을 지정합니다.

예(Transact-SQL)

다음 예에서는 구독자가 FTP를 사용하여 스냅숏 데이터에 액세스할 수 있는 병합 게시를 만듭니다. 구독자는 FTP 공유에 액세스할 때 보안 VPN 연결을 사용해야 합니다. sqlcmd 스크립팅 변수는 로그인 및 암호 값을 제공하는 데 사용됩니다. 자세한 내용은 스크립팅 변수와 함께 sqlcmd 사용을 참조하십시오.

-- 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 @ftp_server AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
DECLARE @ftp_login AS sysname;
DECLARE @ftp_password AS sysname;
DECLARE @ftp_directory AS sysname;
DECLARE @snapshot_folder AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksSalesOfferMergeFtp'; 
SET @ftp_server = $(Server);
SET @login = $(Login);
SET @password = $(Password);
SET @ftp_login = $(FtpLogin);
SET @ftp_password = $(FtpPassword);
SET @ftp_directory = N'\snapshots\ftp';
-- The snapshot folder is the root FTP folder on the server 
-- with the \snapshot subdirectory.
SET @snapshot_folder = $(AlternateFolder);
SET @article = N'SpecialOffer'; 
SET @owner = N'Sales' 

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

-- Create a new merge publication, enabling FTP snapshot delivery. 
-- Specify the publication compatibility level or it will default to 
-- SQL Server 2000.
USE [AdventureWorks]
EXEC sp_addmergepublication 
-- Specify the required parameters.
    @publication = @publication,
    @publication_compatibility_level = N'90RTM',
    @enabled_for_internet = N'true',
    @snapshot_in_defaultfolder = N'true',
    @alt_snapshot_folder = @snapshot_folder,
    @ftp_address = @ftp_server,
    @ftp_subdirectory = @ftp_directory,
    @ftp_login = @ftp_login,
    @ftp_password = @ftp_password;

-- Create the snapshot job for the publication, using the defaults.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password;

-- Add an unfiltered article for the Customer table.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_object = @article, 
    @type = N'table', 
    @source_owner = @owner, 
    @destination_owner = @owner, 
    @column_tracking = N'true'; 

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

다음 예에서는 구독자가 FTP를 사용하여 스냅숏을 얻는 병합 게시에 대한 구독을 만듭니다. 구독자는 FTP 공유에 액세스할 때 보안 VPN 연결을 사용해야 합니다. sqlcmd 스크립팅 변수는 로그인 및 암호 값을 제공하는 데 사용됩니다. 자세한 내용은 스크립팅 변수와 함께 sqlcmd 사용을 참조하십시오.

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

-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksSalesOfferMergeFtp';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';

-- At the Publisher, register the subscription, using the defaults.
EXEC sp_addmergesubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @subscription_type = N'pull', 
    @subscriber_type = N'local', 
    @subscription_priority = 0, 
    @sync_type = N'Automatic';
GO

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

-- Execute this batch at the Subscriber.
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksSalesOfferMergeFtp'; 
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';

EXEC sp_addmergepullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB, 
    @subscriber_type = N'Local', 
    @subscription_priority = 0, 
    @sync_type = N'Automatic';

exec sp_addmergepullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @distributor = @publisher, 
    @distributor_security_mode = 1, 
    @use_ftp = N'true', 
    @job_login = @login, 
    @job_password = @password, 
    @publisher_security_mode = 1, 
    @use_web_sync = 0;
GO

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]

참고 항목

개념

복제 시스템 저장 프로시저 개념

FTP를 통해 스냅숏 전송

게시 및 아티클 속성 변경

스냅숏으로 구독 초기화