Compartilhar via


Entregar um instantâneo pelo FTP

Este tópico descreve como fornecer um instantâneo por meio de FTP no SQL Server 2014 usando SQL Server Management Studio ou Transact-SQL.

Limitações e Restrições

  • O Snapshot Agent deve ter permissões de gravação para o diretório que você especificar, e o Distribution Agent ou Merge Agent devem ter permissões de leitura. Se inscrições pull forem usadas, deve-se especificar um diretório compartilhado como um caminho UNC (Convenção Universal de Nomenclatura), como \\ftpserver\home\snapshots. Para obter mais informações, consulte Proteger a pasta de instantâneos.

Pré-requisitos

  • Para transferir arquivos de instantâneo que usam Protocolo de Transferência de Arquivo (FTP), deve-se, em primeiro lugar, configurar um servidor de FTP. Para obter mais informações, consulte a documentação Microsoft Serviços de Informações da Internet (IIS).

Segurança

Para ajudar a melhorar a segurança, recomendamos implementar uma rede privada virtual (VPN) ao usar a entrega de instantâneo FTP pela Internet. Para obter mais informações, consulte Publicar dados pela Internet usando VPN.

Como uma prática recomendada de segurança, não permita logons anônimos ao servidor FTP. O Snapshot Agent deve ter permissões de gravação para o diretório que você especificar, e o Distribution Agent ou Merge Agent devem ter permissões de leitura. Se inscrições pull forem usadas, deve-se especificar um diretório compartilhado como um caminho UNC (Convenção Universal de Nomenclatura), como \\ftpserver\home\snapshots. Para obter mais informações, consulte Proteger a pasta de instantâneos.

Quando possível, solicite que os usuários insiram suas credenciais em runtime. Se você armazenar credenciais em um arquivo de script, será necessário proteger o arquivo.

Como usar o SQL Server Management Studio.

Depois que o servidor FTP for configurado, especifique informações de diretório e segurança para esse servidor na caixa de diálogo Publicação de Propriedades <da Publicação> . Para obter mais informações sobre como acessar essa caixa de diálogo, consulte View and Modify Publication Properties.

Para especificar informações de FTP

  1. Na caixa de diálogo Propriedades da Publicação – <Publicação>, selecione Permitir que assinantes baixem arquivos instantâneo usando FTP de uma das seguintes páginas:
    • A página Instantâneo de FTP, para publicações transacionais e instantâneo e publicações de mesclagem para editores que executam versões anteriores ao Microsoft SQL Server 2005.
    • A página Instantâneo e Internet do FTP, para publicações de mesclagem de Editores em execução SQL Server 2005 ou posterior.
  2. Especifique valores para Nome do servidor FTP, Número da porta, Caminho da pasta raiz de FTP, Logone Senha.
    Por exemplo, se a raiz do servidor FTP for \\ftpserver\home e você quiser que os instantâneos sejam armazenados em \\ftpserver\home\snapshots, especifique \snapshots\ftp para a propriedade Caminho da pasta raiz FTP (a replicação acrescenta 'ftp' ao caminho da pasta instantâneo quando cria arquivos instantâneo).
  3. Especifique que o Agente de Instantâneo deve gravar os arquivos de instantâneo no diretório especificado na etapa 2. Por exemplo, para que o Snapshot Agent grave os arquivos de instantâneo em \\ftpserver\home\snapshots, deve-se especificar o caminho \\ftpserver\home\snapshots em um ou dois lugares:
    • O local de instantâneo padrão para o Distribuidor associado a essa publicação.
      Para obter mais informações sobre como especificar o local de instantâneo padrão, consulte Especificar o local do instantâneo padrão.
    • Um local alternativo de pasta de instantâneo para essa publicação. Um local alternativo será requerido se o instantâneo for compactado.
      Insira o caminho na caixa de texto Colocar arquivos na pasta a seguir na página Instantâneo da caixa de diálogo Propriedades da Publicação – <Publicação> .
  4. Clique em OK.

Usando o Transact-SQL

A opção para tornar os arquivos de instantâneo disponíveis em um servidor FTP podem ser definidas, e essas configurações FTP podem ser modificadas programaticamente usando procedimentos de armazenamento. O procedimento usado depende do tipo de publicação. A entrega de instantâneo FTP é usada apenas com assinaturas pull.

Par habilitar a entrega de instantâneo FTP para um instantâneo ou publicação transacional

  1. No Publicador do banco de dados de publicação, execute sp_addpublication. Especifique @publication, um valor de true para @enabled_for_internet e valores apropriados para os seguintes parâmetros:

    • @ftp_address – o endereço do servidor FTP usado para entregar o instantâneo.
    • (Opcional) @ ftp_port - a porta usada pelo servidor FTP.
    • (Opcional) @ ftp_subdirectory - o subdiretório do diretório FTP padrão atribuído a um logon de FTP. Por exemplo, se a raiz do servidor FTP for \\ftpserver\home e você quiser que os instantâneos sejam armazenados em \\ftpserver\home\snapshots, especifique \snapshots\ftp para @ftp_subdirectory (a replicação acrescenta 'ftp' ao caminho da pasta instantâneo quando cria arquivos instantâneo).
    • (Opcional) @ ftp_login - uma conta de logon usada para conectar-se ao servidor FTP.
    • (Opcional) @ ftp_password - a senha para o logon no FTP.

    Isso cria uma publicação que usa FTP. Para obter mais informações, consulte Criar uma assinatura.

Para habilitar a entrega de instantâneo FTP para uma publicação de mesclagem

  1. No Publicador do banco de dados de publicação, execute sp_addmergepublication. Especifique @publication, um valor de true para @enabled_for_internet e valores apropriados para os seguintes parâmetros:

    • @ftp_address – o endereço do servidor FTP usado para entregar o instantâneo.
    • (Opcional) @ ftp_port - a porta usada pelo servidor FTP.
    • (Opcional) @ ftp_subdirectory - o subdiretório do diretório FTP padrão atribuído a um logon de FTP. Por exemplo, se a raiz do servidor FTP for \\ftpserver\home e você quiser que os instantâneos sejam armazenados em \\ftpserver\home\snapshots, especifique \snapshots\ftp para @ftp_subdirectory (a replicação acrescenta 'ftp' ao caminho da pasta instantâneo quando cria arquivos instantâneo).
    • (Opcional) @ ftp_login - uma conta de logon usada para conectar-se ao servidor FTP.
    • (Opcional) @ ftp_password - a senha para o logon no FTP.

    Isso cria uma publicação que usa FTP. Para obter mais informações, consulte Criar uma assinatura.

Para criar uma assinatura pull para um instantâneo ou publicação transacional que use a entrega de instantâneo FTP

  1. No Assinante, no banco de dados de assinatura, execute sp_addpullsubscription. Especifique @publisher e @publication.

    • No Assinante, no banco de dados de assinatura, execute sp_addpullsubscription_agent. Especifique @publisher, @publisher_db, @publication, as credenciais do Microsoft Windows sob as quais o Agente de Distribuição no Assinante é executado para @job_login e @job_password e um valor de true para @use_ftp.
  2. No Publicador do banco de dados de publicação, execute sp_addsubscription para registrar a assinatura pull. Para obter mais informações, consulte Create a Pull Subscription.

Para criar uma assinatura pull para uma publicação de mesclagem use a entrega de instantâneo FTP

  1. No Assinante, no banco de dados de assinatura, execute o sp_addmergepullsubscription. Especifique @publisher e @publication.
  2. No Assinante, no banco de dados de assinatura, execute sp_addmergepullsubscription_agent. Especifique @publisher, @publisher_db, @publication, as credenciais do Windows sob as quais o Agente de Distribuição no Assinante é executado para @job_login e @job_password e um valor de true para @use_ftp.
  3. No Publicador do banco de dados de publicação, execute sp_addmergesubscription para registrar a assinatura pull. Para obter mais informações, consulte Create a Pull Subscription.

Para alterar uma ou outra configuração de entrega de instantâneo FTP para um instantâneo ou publicação transacional

  1. No Publicador do banco de dados de publicação, execute sp_changepublication. Especifique um dos valores seguintes para @ property e um valor novo dessa configuração para @ value:

    • ftp_address - o endereço do servidor FTP usado para entregar o instantâneo.
    • ftp_port - a porta usada pelo servidor FTP.
    • ftp_subdirectory- o subdiretório do diretório de FTP padrão usado para o instantâneo de FTP.
    • ftp_login - um logon usado para conectar-se ao servidor FTP.
    • ftp_password - a senha para o logon no FTP.
  2. (Opcional) Repita a etapa 1 para cada configuração FTP que é alterada.

  3. (Opcional) Para desabilitar a entrega do instantâneo de FTP , execute sp_changepublication no Publicador do banco de dados de publicação. Especifique um valor de enabled_for_internet para @property e um valor de false para @value.

Para alterar a entrega do instantâneo de FTP para uma publicação de mesclagem

  1. No Publicador do banco de dados de publicação, execute sp_changemergepublication. Especifique um dos valores seguintes para @ property e um valor novo dessa configuração para @ value:

    • ftp_address - o endereço do servidor FTP usado para entregar o instantâneo.
    • ftp_port - a porta usada pelo servidor FTP.
    • ftp_subdirectory- o subdiretório do diretório de FTP padrão usado para o instantâneo de FTP.
    • ftp_login - um logon usado para conectar-se ao servidor FTP.
    • ftp_password - a senha para o logon no FTP.
  2. (Opcional) Repita a etapa 1 para cada configuração FTP que é alterada.

  3. (Opcional) Para desabilitar a entrega do instantâneo de FTP , execute sp_changemergepublication no Publicador do banco de dados de publicação. Especifique um valor de enabled_for_internet para @property e um valor de false para @value.

Exemplos (Transact-SQL)

O exemplo seguinte cria uma publicação de mesclagem que permite aos Assinantes acessarem os dados de instantâneo que usam FTP. O Assinante deve usar uma conexão VPN segura ao acessar o compartilhamento de FTP. sqlcmd as variáveis de script são usadas para fornecer valores de logon e senha. Para obter mais informações, consulte Usar sqlcmd com variáveis de script.

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

O exemplo a seguir cria uma assinatura para uma publicação de mesclagem onde o Assinante obtém o instantâneo usando FTP. O Assinante deve usar uma conexão VPN segura ao acessar o compartilhamento de FTP. sqlcmd as variáveis de script são usadas para fornecer valores de logon e senha. Para obter mais informações, consulte Usar sqlcmd com variáveis de script.

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

Consulte Também

Replication System Stored Procedures Concepts
Transferir instantâneos pelo FTP
Alterar propriedades da publicação e do artigo
Inicializar uma assinatura com um instantâneo