Поделиться через


Доставка моментального снимка через FTP

В этом разделе описывается доставка моментального снимка по протоколу FTP в SQL Server 2012 с помощью среды Среда SQL Server Management Studio или Transact-SQL.

В этом разделе

  • Перед началом работы выполните следующие действия.

    Ограничения

    Предварительные требования

    Безопасность

  • Для доставки моментального снимка по протоколу FTP используется:

    Среда SQL Server Management Studio

    Transact-SQL

Перед началом

Ограничения

  • Агент моментальных снимков должен иметь разрешения на запись в указанный каталог, а агент распространителя или агент слияния должен иметь разрешения на чтение из этого каталога. При использовании подписок по запросу следует указать в качестве пути, соответствующего соглашению об универсальном назначении имен (UNC), общий каталог, например \\ftpserver\home\snapshots. Дополнительные сведения см. в разделе Организация безопасности папки моментальных снимков.

Предварительные требования

  • Для передачи файлов моментальных снимков с использованием протокола FTP (File Transfer Protocol) необходимо настроить FTP-сервер. Дополнительные сведения см. в документации служб IIS Microsoft.

Безопасность

В целях повышения безопасности рекомендуется реализовать частную виртуальную сеть (VPN) при доставке моментальных снимков по протоколу FTP через Интернет. Дополнительные сведения см. в разделе Публикация данных через Интернет с помощью виртуальных частных сетей.

Для обеспечения безопасности рекомендуется запретить анонимный вход на FTP-сервер. Агент моментальных снимков должен иметь разрешения на запись в указанный каталог, а агент распространителя или агент слияния должен иметь разрешения на чтение из этого каталога. При использовании подписок по запросу следует указать в качестве пути, соответствующего соглашению об универсальном назначении имен (UNC), общий каталог, например \\ftpserver\home\snapshots. Дополнительные сведения см. в разделе Организация безопасности папки моментальных снимков.

По возможности запрашивайте у пользователей учетные данные в среде выполнения приложения. Если учетные данные хранятся в файле скрипта, необходимо защитить этот файл.

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование среды SQL Server Management Studio

После настройки FTP-сервера укажите каталог и сведения безопасности для этого сервера в диалоговом окне Свойства публикации — <публикация>. Дополнительные сведения о доступе к этому диалоговому окну см. в разделе Просмотр и изменение свойств публикации.

Указание сведений FTP

  1. В диалоговом окне Свойства публикации — <публикация> установите флажок Разрешить подписчикам загружать файлы моментальных снимков по протоколу FTP на одной из следующих страниц.

    • Страница Моментальный снимок FTP для публикаций моментальных снимков, публикаций транзакций и публикаций слиянием с издателей, использующих версии, предшествующие Microsoft SQL Server 2005.

    • Страница Моментальный снимок FTP и Интернет для публикаций слиянием с издателей, использующих SQL Server 2005 или более позднюю версию.

  2. Укажите значения для свойств Имя FTP-сервера, Номер порта, Путь из корневой папки FTP, Имя входа и Пароль.

    Например, если корневой каталог FTP-сервера является «\\ftpserver\home» и нужно, чтобы моментальные снимки хранились в «\\ftpserver\home\snapshots», укажите значение «\snapshots\ftp» для свойства Путь из корневой папки FTP (репликация присоединяет 'ftp' к пути папки моментальных снимков при создании файлов моментальных снимков).

  3. Укажите, что агент моментальных снимков должен записывать файлы моментальных снимков в каталог, указанный на шаге 2. Например, чтобы агент моментальных снимков записывал файлы моментальных снимков в «\\ftpserver\home\snapshots\ftp», следует указать путь «\\ftpserver\home\snapshots» в одном из двух мест:

    • Расположение моментальных снимков по умолчанию для распространителя, связанного с этой публикацией.

      Дополнительные сведения об указании расположения моментальных снимков по умолчанию см. в разделе указать расположение моментальных снимков (среда SQL Server Management Studio).

    • Альтернативное расположение папки моментальных снимков для данной публикации. Если моментальный снимок сжимается, необходимо альтернативное расположение папки.

      Введите путь в текстовом поле Поместить файлы в следующую папку на странице «Моментальный снимок» диалогового окна Свойства публикации — <публикация>. Дополнительные сведения об альтернативных местоположениях папки моментальных снимков см. в разделе Альтернативные местоположения папки моментальных снимков.

  4. Нажмите кнопку ОК.

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование Transact-SQL

Можно установить параметр, который сделает доступными файлы моментальных снимков на сервере, а настройки FTP можно изменить программно с помощью хранимых процедур репликации. Эта процедура зависит от типа публикации. Доставка моментальных снимков по протоколу FTP используется только с подписками по запросу.

Включение доставки моментальных снимков по протоколу FTP для публикации моментальных снимков или публикации транзакций

  • На издателе в базе данных публикации выполните хранимую процедуру sp_addpublication. Укажите параметр @publication, значение true в параметре @enabled_for_internet и соответствующие значения для следующих параметров:

    • @ftp_address — адрес FTP-сервера, используемого для доставки моментального снимка;

    • @ftp_port — порт, используемый FTP-сервером (необязательно);

    • @ftp_subdirectory — вложенный каталог в каталоге FTP по умолчанию, назначенном для имени входа на FTP-сервер (необязательно). Например, если корневой каталог FTP-сервера является «\\ftpserver\home» и нужно, чтобы моментальные снимки хранились в каталоге «\\ftpserver\home\snapshots», укажите значение \snapshots\ftp в параметре @ftp_subdirectory (репликация присоединяет «ftp» к пути папки моментальных снимков при создании файлов моментальных снимков);

    • @ftp_login — учетная запись входа, используемая для соединения с FTP-сервером (необязательно);

    • @ftp_password — пароль для имени входа на FTP-сервер (необязательно).

    Таким образом создается публикация, использующая протокол FTP. Дополнительные сведения см. в разделе Создание публикации.

Включение доставки моментальных снимков по протоколу FTP для публикации слиянием

  • На издателе в базе данных публикации выполните процедуру sp_addmergepublication. Укажите параметр @publication, значение true в параметре @enabled_for_internet и соответствующие значения для следующих параметров:

    • @ftp_address — адрес FTP-сервера, используемого для доставки моментального снимка;

    • @ftp_port — порт, используемый FTP-сервером (необязательно);

    • @ftp_subdirectory — вложенный каталог в каталоге FTP по умолчанию, назначенном для имени входа на FTP-сервер (необязательно). Например, если корневой каталог FTP-сервера является «\\ftpserver\home» и нужно, чтобы моментальные снимки хранились в каталоге «\\ftpserver\home\snapshots», укажите значение \snapshots\ftp в параметре @ftp_subdirectory (репликация присоединяет «ftp» к пути папки моментальных снимков при создании файлов моментальных снимков);

    • @ftp_login — учетная запись входа, используемая для соединения с FTP-сервером (необязательно);

    • @ftp_password — пароль для имени входа на FTP-сервер (необязательно).

    Таким образом создается публикация, использующая протокол FTP. Дополнительные сведения см. в разделе Создание публикации.

Создание подписки по запросу на публикацию моментальных снимков или публикацию транзакций, использующую доставку моментальных снимков по протоколу FTP

  1. На подписчике в базе данных подписки выполните хранимую процедуру sp_addpullsubscription. Укажите значения параметров @publisher и @publication.

    • На подписчике в базе данных подписки выполните хранимую процедуру sp_addpullsubscription_agent. Укажите параметры @publisher, @publisher_db, @publication, учетные данные Microsoft Windows, с которыми агент распространителя на подписчике выполняется для параметров @job_login и @job_password, а также значение true в параметре @use_ftp.
  2. Чтобы зарегистрировать подписку по запросу, выполните на издателе в базе данных публикации хранимую процедуру sp_addsubscription. Дополнительные сведения см. в разделе Создание подписки по запросу.

Создание подписки по запросу на публикацию слиянием, использующую доставку моментальных снимков по протоколу FTP

  1. На издателе в базе данных подписки выполните процедуру sp_addmergepushsubscription_agent. Укажите значения параметров @publisher и @publication.

  2. На подписчике в базе данных подписки выполните хранимую процедуру sp_addmergepullsubscription_agent. Укажите параметры @publisher, @publisher_db, @publication, учетные данные Windows, с которыми агент распространителя на подписчике выполняется для параметров @job_login и @job_password, а также значение true в параметре @use_ftp.

  3. Чтобы зарегистрировать подписку по запросу, выполните на издателе в базе данных публикации хранимую процедуру sp_addmergesubscription. Дополнительные сведения см. в разделе Создание подписки по запросу.

Изменение одной или нескольких доставок моментальных снимков по протоколу FTP для публикации моментальных снимков или публикации транзакций

  1. На издателе в базе данных публикации выполните процедуру sp_changepublication. Выберите одно из следующих значений в параметре @property и укажите новое значение этого параметра в параметре @value:

    • ftp_address — адрес FTP-сервера, который используется для доставки моментального снимка;

    • ftp_port — порт FTP-сервера;

    • ftp_subdirectory — подкаталог FTP-каталога по умолчанию, в котором хранится моментальный снимок;

    • ftp_login — имя входа для подключения к FTP-серверу;

    • ftp_password — пароль для имени входа.

  2. Повторите шаг 1 для каждого изменяемого параметра FTP-соединения (необязательно).

  3. Чтобы отключить доставку моментальных снимков по протоколу FTP, выполните на издателе в базе данных публикации хранимую процедуру sp_changepublication (необязательно). Укажите значение enabled_for_internet в параметре @property и значение false в параметре @value.

Изменение настроек доставки моментальных снимков по протоколу FTP для публикации слиянием

  1. В базе данных публикации на издателе выполните процедуру sp_changemergepublication. Выберите одно из следующих значений в параметре @property и укажите новое значение этого параметра в параметре @value:

    • ftp_address — адрес FTP-сервера, который используется для доставки моментального снимка;

    • ftp_port — порт FTP-сервера;

    • ftp_subdirectory — подкаталог FTP-каталога по умолчанию, в котором хранится моментальный снимок;

    • ftp_login — имя входа для подключения к FTP-серверу;

    • ftp_password — пароль для имени входа.

  2. Повторите шаг 1 для каждого изменяемого параметра FTP-соединения (необязательно).

  3. Чтобы отключить доставку моментальных снимков по протоколу FTP, выполните на издателе в базе данных публикации хранимую процедуру sp_changemergepublication (необязательно). Укажите значение enabled_for_internet в параметре @property и значение 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

Значок стрелки, используемый со ссылкой «В начало»[Top]

См. также

Основные понятия

Основные понятия системных хранимых процедур репликации

Передача моментальных снимков через FTP

Изменение свойств публикации и статьи

Инициализация подписки с помощью моментального снимка