Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
В этом разделе описывается, как доставлять моментальный снимок через FTP в SQL Server с помощью SQL Server Management Studio или Transact-SQL.
По умолчанию моментальные снимки сохраняются в папках, определенных как совместно используемые папки в формате универсального соглашения об именовании (UNC). Репликация также позволяет задать общий FTP-ресурс вместо общего UNC-ресурса. Для использования FTP необходимо настроить FTP-сервер, а затем настроить публикацию и одну или несколько подписок для использования FTP. Сведения о настройке FTP-сервера см. в документации по службам IIS (Internet Information Services). Если для публикации указать параметры FTP, подписки на эту публикацию по умолчанию используют FTP. Протокол FTP используется только при веб-синхронизации, когда компьютер, на котором запущены службы IIS, отделен от распространителя брандмауэром. В этом случае для передачи снимка между дистрибьютором и компьютером, на котором работает IIS, можно использовать протокол FTP. (Моментальный снимок всегда передается подписчику по протоколу HTTPS.)
Внимание
Мы рекомендуем использовать проверку подлинности Windows Microsoft и общий ресурс UNC вместо FTP-ресурса, поскольку пароли FTP необходимо хранить, а пароль передаётся от подписчика или компьютера, на котором работает IIS, на FTP-сервер в открытом виде при использовании веб-синхронизации. Кроме этого, поскольку одна учетная запись управляет доступом к хранилищу моментального снимка, невозможно гарантировать, что подписчик на фильтруемую публикацию слиянием имеет доступ только к файлам моментальных снимков из своей секции данных.
Ограничения и запреты
- Агент моментальных снимков должен иметь разрешения на запись в каталог, который вы укажете, а Агент распространения или Агент слияния должны иметь разрешения на чтение. Если используются подписки по запросу, необходимо указать общий каталог в качестве универсального пути именования (UNC), например \\ftpserver\home\snapshots. Дополнительные сведения см. в статье Организация безопасности папки моментальных снимков.
Предварительные требования
- Для передачи файлов моментальных снимков с использованием протокола FTP (File Transfer Protocol) необходимо настроить FTP-сервер. Дополнительные сведения см. в документации Microsoft IIS (IIS).
Безопасность
В целях повышения безопасности рекомендуется реализовать частную виртуальную сеть (VPN) при доставке моментальных снимков по протоколу FTP через Интернет. Дополнительные сведения см. в статье Публикация данных через Интернет с помощью виртуальных частных сетей.
Для обеспечения безопасности рекомендуется запретить анонимный вход на FTP-сервер. Агент моментальных снимков должен иметь разрешения на запись в каталог, который вы укажете, а Агент распространения или Агент слияния должны иметь разрешения на чтение. Если используются подписки по запросу, необходимо указать общий каталог в качестве универсального пути именования (UNC), например \\ftpserver\home\snapshots. Дополнительные сведения см. в статье Организация безопасности папки моментальных снимков.
По возможности запрашивайте у пользователей учетные данные в среде выполнения приложения. Если учетные данные хранятся в файле скрипта, необходимо защитить этот файл.
Использование среды SQL Server Management Studio
После настройки FTP-сервера укажите для этого сервера сведения о каталоге и безопасности в диалоговом окне Свойства публикации <Публикация>. Дополнительные сведения о доступе к этому диалоговому окну см. в разделе Просмотр и изменение свойств публикации.
Указать данные FTP
В диалоговом окне Publication Properties - >Publication выберите Разрешить подписчикам загружать файлы моментальных снимков с помощью FTP на одной из следующих страниц:
Страница FTP Snapshot для публикаций моментальных снимков, транзакционных публикаций и публикаций слиянием для издателей, работающих с версиями, предшествующими Microsoft SQL Server 2005 (9.x).
Страница FTP Snapshot and Internet для публикаций слияния от издателей, работающих под управлением SQL Server 2005 (9.x) или более поздних версий.
Укажите значения для свойств Имя FTP-сервера, Номер порта, Путь из корневой папки FTP, Имя входаи Пароль.
Например, если корневая папка FTP-сервера — \\ftpserver\home и моментальные снимки нужно хранить в \\ftpserver\home\snapshots, укажите значение \snapshots\ftp для свойства Путь от корневой папки FTP (репликация добавляет "ftp" к пути к папке моментальных снимков при создании файлов моментальных снимков).
Укажите, что агент моментальных снимков должен записывать файлы моментальных снимков в каталог, указанный на шаге 2. Например, чтобы агент моментальных снимков записывал файлы моментальных снимков в \\ftpserver\home\snapshots\ftp, необходимо указать путь \\ftpserver\home\snapshots в одном из двух мест:
- Расположение снимков по умолчанию для Распространителя, связанного с данной публикацией.
- Альтернативное расположение папки моментальных снимков для данной публикации. Если моментальный снимок сжат, требуется другое местоположение.
Дополнительные сведения об изменении свойств расположения папки моментальных снимков см. в разделе Параметры моментальных снимков.
- Нажмите ОК.
Использование 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, укажите@ftp_subdirectoryдля (репликация добавляет «ftp» к пути к папке моментальных снимков при создании файлов моментальных снимков).@ftp_login— учетная запись входа, используемая для соединения с FTP-сервером (необязательно).@ftp_password— пароль для имени входа FTP (необязательно).
Таким образом создается публикация, использующая протокол FTP. Дополнительные сведения см. в разделе Create a Publication.
Включить доставку моментального снимка по протоколу FTP для публикации слиянием
На сервере-издателе в базе данных публикации выполните процедуру sp_addmergepublication. Укажите параметр
@publication, значение true в параметре@enabled_for_internetи соответствующие значения для следующих параметров:@ftp_address— адрес FTP-сервера, который используется для доставки моментального снимка;@ftp_port— порт FTP-сервера (необязательно).(Необязательно)
@ftp_subdirectory— подкаталог FTP-каталога по умолчанию, назначенный для учётной записи FTP. Например, если корневой каталог FTP-сервера имеет вид \\ftpserver\home и вы хотите, чтобы моментальные снимки хранились в папке \\ftpserver\home\snapshots, укажите@ftp_subdirectoryдля (репликация добавляет «ftp» к пути к папке моментальных снимков при создании файлов моментальных снимков).@ftp_login— учетная запись входа, используемая для соединения с FTP-сервером (необязательно).@ftp_password— пароль для имени входа FTP (необязательно).
Таким образом создается публикация, использующая протокол FTP. Дополнительные сведения см. в разделе Create a Publication.
Создание подписки по запросу на публикацию моментальных снимков или публикацию транзакций, использующую доставку моментальных снимков по протоколу FTP
На сервере-подписчике в базе данных подписки выполните хранимую процедуру sp_addpullsubscription. Укажите параметры
@publisherи@publication.- На подписчике в базе данных подписки выполните хранимую процедуру sp_addpullsubscription_agent. Укажите
@publisher,@publisher_db,@publication, учетные данные Microsoft Windows, от имени которых агент распространения запускается на подписчике, для@job_loginи@job_password, а также значение true для@use_ftp.
- На подписчике в базе данных подписки выполните хранимую процедуру sp_addpullsubscription_agent. Укажите
Чтобы зарегистрировать подписку по запросу, выполните на издателе в базе данных публикации хранимую процедуру sp_addsubscription . Дополнительные сведения см. в статье Создание подписки по запросу.
Создание подписки типа pull на публикацию слияния с доставкой моментальных снимков по FTP
На подписчике в базе данных подписки выполните процедуру sp_addmergepullsubscription. Укажите параметры
@publisherи@publication.На подписчике в базе данных подписки выполните sp_addmergepullsubscription_agent. Укажите параметры
@publisher,@publisher_db,@publication, учетные данные Windows, с которыми запускается агент распространения у подписчика, для параметров@job_loginи@job_password, а также значениеtrueдля параметра@use_ftp.Чтобы зарегистрировать подписку по запросу, выполните на издателе в базе данных публикации хранимую процедуру sp_addmergesubscription . Дополнительные сведения см. в статье Создание подписки по запросу.
Изменение одного или нескольких параметров доставки моментального снимка через FTP для публикации моментальных снимков или публикации транзакций
На издателе в базе данных публикаций выполните процедуру sp_changepublication. Укажите одно из следующих значений в параметре
@propertyи новое значение этого параметра в параметре@value:ftp_address— адрес FTP-сервера, который используется для доставки моментального снимка;ftp_port— порт FTP-сервера;ftp_subdirectory— подкаталог FTP-каталога по умолчанию, в котором хранится моментальный снимок;ftp_login— имя входа для подключения к FTP-серверу;ftp_password— пароль для FTP-входа.
Повторите шаг 1 для каждого изменяемого параметра FTP-соединения (необязательно).
(Необязательно) Чтобы отключить доставку моментальных снимков по FTP, выполните sp_changepublication на издателе в базе данных публикации. Укажите значение
enabled_for_internetв параметре@propertyи значениеfalseв параметре@value.
Изменение настроек доставки моментальных снимков по FTP для публикации слияния
На узле Publisher в базе данных публикации выполните sp_changemergepublication. Укажите одно из следующих значений в параметре
@propertyи новое значение этого параметра в параметре@value:ftp_address— адрес FTP-сервера, который используется для доставки моментального снимка;ftp_port— порт FTP-сервера;ftp_subdirectory— подкаталог FTP-каталога по умолчанию, в котором хранится моментальный снимок;ftp_login— имя входа для подключения к FTP-серверу;ftp_password— пароль для FTP-входа.
Повторите шаг 1 для каждого изменяемого параметра FTP-соединения (необязательно).
(Необязательно) Чтобы отключить доставку снимков состояния через 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