Cómo configurar la publicación y la distribución (programación de la replicación con Transact-SQL)

La publicación y distribución de replicaciones se puede configurar mediante programación usando procedimientos almacenados de replicación.

Para configurar la publicación mediante un distribuidor local

  1. Ejecute sp_get_distributor (Transact-SQL) para determinar si el servidor ya está configurado como distribuidor.

    • Si el valor de installed en el conjunto de resultados es 0, ejecute sp_adddistributor (Transact-SQL) en el distribuidor en la base de datos maestra.

    • Si el valor de distribution db installed en el conjunto de resultados es 0, ejecute sp_adddistributiondb (Transact-SQL) en la base de datos maestra del distribuidor. Especifique el nombre de la base de datos de distribución para @database. Opcionalmente, puede especificar el período de retención de transacción máximo para @max_distretention y el período de retención del historial para @ history_retention. Si se está creando una nueva base de datos, especifique los parámetros de propiedad de la base de datos que desee.

  2. En el distribuidor, que también es el publicador, ejecute sp_adddistpublisher (Transact-SQL) y especifique el recurso compartido UNC que se utilizará como carpeta de instantáneas predeterminada para @working_directory.

  3. En el publicador, ejecute sp_replicationdboption (Transact-SQL). Especifique la base de datos que se está publicando para @dbname, el tipo de replicación para @optname y el valor true para @value.

Para configurar la publicación mediante un distribuidor remoto

  1. Ejecute sp_get_distributor (Transact-SQL) para determinar si el servidor ya está configurado como un distribuidor.

    • Si el valor de installed en el conjunto de resultados es 0, ejecute sp_adddistributor (Transact-SQL) en el distribuidor en la base de datos maestra. Especifique una contraseña segura para @password. Esta contraseña para la cuenta distributor_admin la utilizará el publicador para conectarse al distribuidor.

    • Si el valor de distribution db installed en el conjunto de resultados es 0, ejecute sp_adddistributiondb (Transact-SQL) en la base de datos maestra del distribuidor. Especifique el nombre de la base de datos de distribución para @database. Opcionalmente, puede especificar el período de retención de transacción máximo para @max_distretention y el período de retención del historial para @ history_retention. Si se está creando una nueva base de datos, especifique los parámetros de propiedad de la base de datos que desee.

  2. En el distribuidor, ejecute sp_adddistpublisher (Transact-SQL) y especifique el recurso compartido UNC que se utilizará como carpeta de instantáneas predeterminada para @working_directory. Si el distribuidor va a utilizar autenticación de SQL Server para conectarse al publicador, también debe especificar el valor 0 para @ security_mode y la información de inicio de sesión de MicrosoftSQL Server para @login y @password.

  3. En la base de datos maestra del publicador, ejecute sp_adddistributor (Transact-SQL). Especifique la contraseña segura utilizada en el paso 1 para @password. El publicador utilizará esta contraseña cuando se conecte al distribuidor.

  4. En el publicador, ejecute sp_replicationdboption (Transact-SQL). Especifique la base de datos que se está publicando para @dbname, el tipo de replicación para @optname y el valor true para @value.

Ejemplo

El ejemplo siguiente muestra cómo configurar mediante programación la publicación y la distribución. En este ejemplo, se proporciona el nombre del servidor que se está configurando como un publicador y un distribuidor local mediante las variables de scripts.

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