Como configurar publicação e distribuição (Programação Transact-SQL de replicação)

Publicação e distribuição de replicação podem ser configuradas de forma programada, usando-se procedimentos de replicação armazenados.

Para configurar publicação usando um distribuidor local

  1. Execute sp_get_distributor (Transact-SQL) para determinar se o servidor já está configurado como um Distribuidor.

    • Se o valor de installed no conjunto de resultados for 0, execute sp_adddistributor (Transact-SQL) no Distribuidor no banco de dados mestre.

    • Se o valor de distribution db installed no conjunto de resultados for 0, execute sp_adddistributiondb (Transact-SQL) no Distribuidor no banco de dados mestre. Especifique o nome do banco de dados de distribuição para @database. Opcionalmente, você pode especificar o período máximo de retenção transacional para @ max_distretention e o período de retenção de histórico para @ history_retention. Se um banco de dados novo estiver sendo criado, especifique os parâmetros de propriedade de banco de dados desejados.

  2. No Distribuidor, que também é o Publicador, execute sp_adddistpublisher (Transact-SQL), especificando o compartilhamento UNC que será usado como pasta padrão de instantâneo @working_directory.

  3. No Publicador, execute sp_replicationdboption (Transact-SQL). Especifique o banco de dados que está sendo publicado para @dbname, o tipo de replicação para @optname e o valor true para @value.

Para configurar publicação usando um distribuidor remoto

  1. Execute sp_get_distributor (Transact-SQL) para determinar se o servidor já está configurado como um Distribuidor.

    • Se o valor de installed no conjunto de resultados for 0, execute sp_adddistributor (Transact-SQL) no Distribuidor no banco de dados mestre. Especifique uma senha forte para @password. Essa senha para a conta distributor_admin será usada pelo Publicador ao se conectar ao Distribuidor.

    • Se o valor de distribution db installed no conjunto de resultados for 0, execute sp_adddistributiondb (Transact-SQL) no Distribuidor no banco de dados mestre. Especifique o nome do banco de dados de distribuição para @database. Opcionalmente, você pode especificar o período máximo de retenção transacional para @ max_distretention e o período de retenção de histórico para @ history_retention. Se um banco de dados novo estiver sendo criado, especifique os parâmetros de propriedade de banco de dados desejados.

  2. No Distribuidor, execute sp_adddistpublisher (Transact-SQL), especificando o compartilhamento UNC que será usado como pasta padrão de instantâneo para @working_directory. Se o Distribuidor usar a Autenticação do SQL Server ao se conectar ao Publicador, você também deverá especificar um valor de 0 para @security_mode e as informações de logon do MicrosoftSQL Server para @login e @password.

  3. No Publicador do banco de dados mestre, execute sp_adddistributor (Transact-SQL). Especifique a senha forte usada na etapa 1 para @password. Essa senha será usada pelo Publicador ao se conectar ao Distribuidor.

  4. No Publicador, execute sp_replicationdboption (Transact-SQL). Especifique o banco de dados que está sendo publicado para @dbname, o tipo de replicação para @optname, e o valor de verdadeiro para**@value**.

Exemplo

O exemplo a seguir mostra como configurar publicação e distribuição programaticamente. Nesse exemplo, o nome do servidor que está sendo configurado como publicador e um distribuidor local são fornecidos usando 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".

-- Install the Distributor and the distribution database.
DECLARE @distributor AS sysname;
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @directory AS nvarchar(500);
DECLARE @publicationDB AS sysname;
-- Specify the Distributor name.
SET @distributor = $(DistPubServer);
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
-- Specify the replication working directory.
SET @directory = N'\\' + $(DistPubServer) + '\repldata';
-- Specify the publication database.
SET @publicationDB = N'AdventureWorks'; 

-- Install the server MYDISTPUB as a Distributor using the defaults,
-- including autogenerating the distributor password.
USE master
EXEC sp_adddistributor @distributor = @distributor;

-- Create a new distribution database using the defaults, including
-- using Windows Authentication.
USE master
EXEC sp_adddistributiondb @database = @distributionDB, 
    @security_mode = 1;
GO

-- Create a Publisher and enable AdventureWorks for replication.
-- Add MYDISTPUB as a publisher with MYDISTPUB as a local distributor
-- and use Windows Authentication.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);

USE [distribution]
EXEC sp_adddistpublisher @publisher=@publisher, 
    @distribution_db=@distributionDB, 
    @security_mode = 1;
GO