Compartilhar via


Entregar um instantâneo pelo FTP

Este tópico descreve como entregar um instantâneo pelo FTP no SQL Server 2012 usando o SQL Server Management Studio ou o Transact-SQL.

Neste tópico

  • Antes de começar:

    Limitações e restrições

    Pré-requisitos

    Segurança

  • Para entregar um instantâneo pelo FTP, usando:

    SQL Server Management Studio

    Transact-SQL

Antes de começar

Limitações e restrições

  • O Agente de Instantâneo deve ter permissões de gravação para o diretório que você especificar, e o Agente de Distribuição ou Agente de Mesclagem 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 uma pasta de instantâneo.

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 Agente de Instantâneo deve ter permissões de gravação para o diretório que você especificar, e o Agente de Distribuição ou Agente de Mesclagem 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 uma pasta de instantâneo.

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

Ícone de seta usado com o link Voltar ao Início[Top]

Usando o SQL Server Management Studio

Depois que o servidor de FTP for configurado, especifique informações de diretório e de segurança para esse servidor na caixa de diálogo Propriedades de Publicação - <Publicação>. Para obter mais informações sobre como acessar essa caixa de diálogo, consulte Visualizar e modificar as propriedades da publicação.

Para especificar informações de FTP

  1. Na caixa de diálogo Propriedades de Publicação - <Publicação>, selecione Permitir que os Assinantes baixem os arquivos de instantâneo usando FTP de uma das seguintes páginas:

    • A página Instantâneo de FTP para publicações de instantâneo e transacionais e publicações de mesclagem para Publicadores executando versões anteriores ao Microsoft SQL Server 2005.

    • A página Instantâneo de FTP e Internet, para publicações de mesclagem de Publicadores executando SQL Server 2005 ou versões posteriores.

  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 de FTP (a replicação adiciona 'ftp' ao caminho da pasta de instantâneo ao criar arquivos de 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 Agente de Instantâneo 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 (SQL Server Management Studio).

    • Um local alternativo de pasta de instantâneo para essa publicação. Um local alternativo será requerido se o instantâneo for compactado.

      Digite o caminho na caixa de texto Colocar os arquivos nesta pasta na página Instantâneo da caixa de diálogo Propriedades da Publicação - <Publicação>. Para obter mais informações sobre locais alternativos da pasta de instantâneo, consulte Locais da pasta de instantâneos alternativos.

  4. Clique em OK.

Ícone de seta usado com o link Voltar ao Início[Top]

Usando 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

  • No Publicador do banco de dados de publicação, execute sp_addpublication. Especifique @publication, um valor de true para @enabled_for_internet e valores adequados 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ê deseja que os instantâneos sejam armazenados em \\ftpserver\home\snapshots, especifique \snapshots\ftp para @ftp_subdirectory (a replicação acrescentará 'ftp' ao caminho da pasta de instantâneo ao criar os arquivos de 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 Crie uma publicação.

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

  • No Publicador do banco de dados de publicação, execute sp_addmergepublication. Especifique @publication, um valor de true para @enabled_for_internet e valores adequados 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ê deseja que os instantâneos sejam armazenados em \\ftpserver\home\snapshots, especifique \snapshots\ftp para @ftp_subdirectory (a replicação acrescentará 'ftp' ao caminho da pasta de instantâneo ao criar os arquivos de 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 Crie uma publicação.

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 Windows Microsoft nas quais o Agente de Distribuição no Assinante executa do @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 Criar uma assinatura pull.

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 nas quais o Agente de Distribuição no Assinante executa do @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 Criar uma assinatura pull.

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 FTP usado para o instantâneo do FTP.

    • ftp_login - um logon usado para se conectar 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. Variáveis de script sqlcmd 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. Variáveis de script sqlcmd 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

Ícone de seta usado com o link Voltar ao Início[Top]

Consulte também

Conceitos

Conceitos dos procedimentos armazenados do sistema de replicação

Transferir instantâneos pelo FTP

Alterar propriedades da publicação e do artigo

Inicializar uma assinatura com um instantâneo