다음을 통해 공유


FTP를 통해 스냅샷 배달

이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 2014년 SQL Server FTP를 통해 스냅샷 제공하는 방법을 설명합니다.

제한 사항

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

필수 구성 요소

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

보안

인터넷을 통해 FTP 스냅샷 배달을 사용하는 경우에는 보안 향상을 위해 VPN(가상 프라이빗 네트워크)을 구현하는 것이 좋습니다. 자세한 내용은 VPN을 사용하여 인터넷을 통해 데이터 게시를 참조하세요.

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

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

SQL Server Management Studio 사용

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

FTP 정보를 지정하려면

  1. 게시 속성 - <게시> 대화 상자에서 구독자가 다음 페이지 중 하나에서 FTP를 사용하여 스냅샷 파일을 다운로드하도록 허용을 선택합니다.
    • MICROSOFT SQL Server 2005 이전 버전을 실행하는 게시자의 스냅샷 및 트랜잭션 게시 및 병합 게시에 대한 FTP 스냅샷 페이지입니다.
    • SQL Server 2005 이상을 실행하는 게시자의 병합 게시에 대한 FTP 스냅샷 및 인터넷 페이지입니다.
  2. FTP 서버 이름, 포트 번호, FTP 루트 폴더에서의 경로, 로그인암호에 대한 값을 지정합니다.
    예를 들어 FTP 서버 루트가 \\ftpserver\home이고 스냅샷을 \\ftpserver\home\snapshots에 저장하려는 경우 FTP 루트 폴더의 경로 속성에 \snapshots\ftp를 지정합니다(복제는 스냅샷 파일을 만들 때 스냅샷 폴더 경로에 'ftp'를 추가함).
  3. 스냅샷 에이전트가 스냅샷 파일을 2단계에서 지정한 디렉터리에 쓰도록 지정합니다. 예를 들어 스냅숏 에이전트가 스냅숏 파일을 \\ftpserver\home\snapshots\ftp에 쓰도록 하려면 다음 두 위치 중 하나에 \\ftpserver\home\snapshots 경로를 지정해야 합니다.
    • 이 게시와 연결된 배포자의 기본 스냅샷 위치
      기본 스냅샷 위치를 지정하는 방법에 대한 자세한 내용은 기본 스냅샷 위치 지정을 참조하세요.
    • 이 게시의 대체 스냅샷 폴더 위치. 대체 위치는 스냅샷이 압축된 경우에 필요합니다.
      게시 속성 - <게시> 대화 상자의 스냅샷 페이지에 있는 다음 폴더에 있는 파일 배치 텍스트 상자에 경로를 입력합니다.
  4. 확인을 클릭합니다.

Transact-SQL 사용

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

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

  1. 게시 데이터베이스의 게시자에서 sp_addpublication을 실행합니다. @publication, @enabled_for_internettrue 및 다음 매개 변수에 적절한 값을 지정합니다.

    • @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_addmergepublication을 실행합니다. @enabled_for_internettrue@publication 지정하고 다음 매개 변수에 적절한 값을 지정합니다.

    • @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 자격 증명 및 값을 true @use_ftp 지정합니다.
  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 값을 false@value 지정합니다.

병합 게시에 대한 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 을 실행합니다. @property 의 값 enabled_for_internet 값을 false@value 지정합니다.

예제(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

참고 항목

Replication System Stored Procedures Concepts
FTP를 통해 스냅샷 전송
게시 및 아티클 속성 변경
스냅샷으로 구독 초기화