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


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

В этом разделе описывается, как доставлять моментальный снимок через FTP в SQL Server 2014 с помощью SQL Server Management Studio или Transact-SQL.

Ограничения и условия

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

Предпосылки

  • Чтобы передать файлы моментальных снимков с помощью ПРОТОКОЛА FTP, необходимо сначала настроить FTP-сервер. Для получения дополнительной информации см. документацию по службам Microsoft Internet Information Services (IIS).

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

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

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

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

Использование среды 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 в одном из двух мест:
    • Местоположение моментального снимка по умолчанию для дистрибьютора, связанного с этой публикацией.
      Дополнительные сведения об указании расположения моментального снимка по умолчанию см. в разделе "Указание расположения моментальных снимков по умолчанию".
    • Альтернативное расположение папки моментальных снимков для этой публикации. Альтернативное расположение необходимо, если моментальный снимок сжимается.
      Введите путь в поле Поместить файлы в следующую папку на странице моментального снимка диалогового окна Свойства публикации - <публикация>.
  4. Нажмите кнопку ОК.

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

Параметр для создания файлов моментальных снимков, доступных на FTP-сервере, можно задать, и эти параметры FTP можно изменять программным способом с помощью хранимых процедур репликации. Используемая процедура зависит от типа публикации. Доставка снимков через FTP используется только с подписками типа 'pull'.

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

  1. На издателе в базе данных публикации выполните 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. Дополнительные сведения см. в разделе Create a Publication.

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

  1. На сервере публикации в базе данных публикации выполните 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. Дополнительные сведения см. в разделе Create a Publication.

Создание подписки на извлечение для моментального снимка или для публикации транзакций, использующей доставку моментальных снимков через 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_addmergepullsubscription. Укажите @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.
    • ftp_login — имя входа, используемое для подключения к FTP-серверу.
    • ftp_password — пароль для входа FTP.
  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.
    • ftp_login — имя входа, используемое для подключения к FTP-серверу.
    • ftp_password — пароль для входа FTP.
  2. (Необязательно) Повторите шаг 1 для каждого измененного параметра FTP.

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

Примеры (Transact-SQL)

В следующем примере создается публикация для слияния, которая позволяет подписчикам получать доступ к данным снимка с помощью FTP. Подписчик должен использовать безопасное VPN-подключение при доступе к общей папке FTP. Переменные скриптов 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. Подписчик должен использовать безопасное VPN-подключение при доступе к общей папке FTP. Переменные скриптов 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

См. также

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