Compartir a través de


Configurar la publicación y la distribución

En este tema se describe cómo configurar la publicación y distribución en SQL Server 2012 mediante SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO).

En este tema

  • Antes de empezar:

    Seguridad

  • Para configurar la publicación y la distribución, mediante:

    SQL Server Management Studio

    Transact-SQL

    Replication Management Objects (RMO)

Antes de empezar

Seguridad

Para obtener más información, vea Implementación segura (replicación).

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Usar SQL Server Management Studio

Configure la distribución con el Asistente para nueva publicación o el Asistente para configurar la distribución. Después de configurar el distribuidor, vea y modifique las propiedades en el cuadro de diálogo Propiedades del distribuidor: <distribuidor>. Utilice el Asistente para configurar la distribución si desea configurar un distribuidor para que los miembros de los roles fijos de base de datos db_owner puedan crear publicaciones o si desea configurar un distribuidor remoto que no sea un publicador.

Para configurar la distribución

  1. En Microsoft SQL Server Management Studio, conecte con el servidor que será el distribuidor (en muchos casos, el publicador y el distribuidor están en el mismo servidor) y, a continuación, expanda el nodo de servidor.

  2. Haga clic con el botón secundario en la carpeta Replicación y, a continuación, en Configurar distribución.

  3. Siga las indicaciones del Asistente para configurar la distribución:

    • Seleccione un distribuidor. Para utilizar un distribuidor local, seleccione '<nombreDeServidor>' actuará como su propio distribuidor; SQL Server creará una base de datos de distribución y registro. Para utilizar un distribuidor remoto, seleccione Utilizar el siguiente servidor como distribuidor y, a continuación, seleccione un servidor. El servidor ya debe estar configurado como distribuidor y el publicador debe estar habilitado para usar el distribuidor. Para obtener más información, vea Habilitar un publicador remoto en un distribuidor (SQL Server Management Studio).

      Si selecciona un distribuidor remoto, debe escribir una contraseña en la página Contraseña administrativa para las conexiones realizadas desde el publicador al distribuidor. Esta contraseña debe coincidir con la especificada cuando se habilitó el publicador en el distribuidor remoto.

    • Especifique una carpeta de instantáneas raíz (para un distribuidor local). La carpeta de instantáneas solo es un directorio que ha designado como recurso compartido; los agentes que leen y escriben en esta carpeta deben contar con permisos suficientes para tener acceso a ella. Cada publicador que utiliza este distribuidor crea una carpeta bajo la carpeta raíz, y cada publicación crea carpetas bajo la carpeta de publicador donde almacena los archivos de instantáneas. Para obtener más información sobre cómo proteger la carpeta adecuadamente, vea Proteger la carpeta de instantáneas.

    • Especifique la base de datos de distribución (para un distribuidor local). La base de datos de distribución almacena metadatos y datos del historial de todos los tipos de replicación y transacciones en la replicación transaccional.

    • Opcionalmente, habilite otros publicadores para utilizar el distribuidor. Si se habilitan otros publicadores para utilizar el distribuidor, debe escribir una contraseña en la página Contraseña del distribuidor para las conexiones realizadas desde esos publicadores al distribuidor.

    • Opcionalmente, genere un script de opciones de configuración. Para obtener más información, vea Crear script para la replicación.

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Usar 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 Microsoft SQL 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 (Transact-SQL)

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 scripting. La publicación y distribución de replicaciones se puede configurar mediante programación usando procedimientos almacenados de replicación.

-- 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'AdventureWorks2012'; 

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

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Usar Replication Management Objects (RMO)

Para configurar la publicación y distribución en un único servidor

  1. Cree una conexión al servidor mediante la clase ServerConnection.

  2. Cree una instancia de la clase ReplicationServer. Pase el objeto ServerConnection del paso 1.

  3. Cree una instancia de la clase DistributionDatabase.

  4. Establezca la propiedad Name en el nombre de la base de datos y la propiedad ConnectionContext en el ServerConnection del paso 1.

  5. Instale el distribuidor llamando al método InstallDistributor. Pase el objeto DistributionDatabase del paso 3.

  6. Cree una instancia de la clase DistributionPublisher.

  7. Establezca las siguientes propiedades de DistributionPublisher:

  8. Llame al método Create.

Para configurar la publicación y distribución mediante un distribuidor remoto

  1. Cree una conexión al servidor del distribuidor remoto mediante la clase ServerConnection.

  2. Cree una instancia de la clase ReplicationServer. Pase el objeto ServerConnection del paso 1.

  3. Cree una instancia de la clase DistributionDatabase.

  4. Establezca la propiedad Name en el nombre de la base de datos y la propiedad ConnectionContext en el ServerConnection del paso 1.

  5. Instale el distribuidor llamando al método InstallDistributor. Especifique una contraseña segura (la que utiliza el publicador al conectarse al distribuidor remoto) y el objeto DistributionDatabase del paso 3. Para obtener más información, vea Proteger el distribuidor.

    Nota de seguridadNota de seguridad

    Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales, use los servicios de cifrado (en inglés) proporcionados por Microsoft Windows .NET Framework.

  6. Cree una instancia de la clase DistributionPublisher.

  7. Establezca las siguientes propiedades de DistributionPublisher:

  8. Llame al método Create.

  9. Cree una conexión al servidor publicador local mediante la clase ServerConnection.

  10. Cree una instancia de la clase ReplicationServer. Pase el objeto ServerConnection del paso 9.

  11. Llame al método InstallDistributor. Pase el nombre del distribuidor remoto y la contraseña para el distribuidor remoto especificado en el paso 5.

    Nota de seguridadNota de seguridad

    Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales, use los servicios criptográficos proporcionados por Windows .NET Framework.

Ejemplo (RMO)

Puede configurar la publicación y distribución de replicación mediante programación utilizando Replication Management Objects (RMO).

           // Set the server and database names
            string distributionDbName = "distribution";
            string publisherName = publisherInstance;
            string publicationDbName = "AdventureWorks2012";

            DistributionDatabase distributionDb;
            ReplicationServer distributor;
            DistributionPublisher publisher;
            ReplicationDatabase publicationDb;

            // Create a connection to the server using Windows Authentication.
            ServerConnection conn = new ServerConnection(publisherName);

            try
            {
                // Connect to the server acting as the Distributor 
                // and local Publisher.
                conn.Connect();

                // Define the distribution database at the Distributor,
                // but do not create it now.
                distributionDb = new DistributionDatabase(distributionDbName, conn);
                distributionDb.MaxDistributionRetention = 96;
                distributionDb.HistoryRetention = 120;

                // Set the Distributor properties and install the Distributor.
                // This also creates the specified distribution database.
                distributor = new ReplicationServer(conn);
                distributor.InstallDistributor((string)null, distributionDb);

                // Set the Publisher properties and install the Publisher.
                publisher = new DistributionPublisher(publisherName, conn);
                publisher.DistributionDatabase = distributionDb.Name;
                publisher.WorkingDirectory = @"\\" + publisherName + @"\repldata";
                publisher.PublisherSecurity.WindowsAuthentication = true;
                publisher.Create();

                // Enable AdventureWorks2012 as a publication database.
                publicationDb = new ReplicationDatabase(publicationDbName, conn);

                publicationDb.EnabledTransPublishing = true;
                publicationDb.EnabledMergePublishing = true;
            }
            catch (Exception ex)
            {
                // Implement appropriate error handling here.
                throw new ApplicationException("An error occured when installing distribution and publishing.", ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Set the server and database names
Dim distributionDbName As String = "distribution"
Dim publisherName As String = publisherInstance
Dim publicationDbName As String = "AdventureWorks2012"

Dim distributionDb As DistributionDatabase
Dim distributor As ReplicationServer
Dim publisher As DistributionPublisher
Dim publicationDb As ReplicationDatabase

' Create a connection to the server using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the server acting as the Distributor 
    ' and local Publisher.
    conn.Connect()

    ' Define the distribution database at the Distributor,
    ' but do not create it now.
    distributionDb = New DistributionDatabase(distributionDbName, conn)
    distributionDb.MaxDistributionRetention = 96
    distributionDb.HistoryRetention = 120

    ' Set the Distributor properties and install the Distributor.
    ' This also creates the specified distribution database.
    distributor = New ReplicationServer(conn)
    distributor.InstallDistributor((CType(Nothing, String)), distributionDb)

    ' Set the Publisher properties and install the Publisher.
    publisher = New DistributionPublisher(publisherName, conn)
    publisher.DistributionDatabase = distributionDb.Name
    publisher.WorkingDirectory = "\\" + publisherName + "\repldata"
    publisher.PublisherSecurity.WindowsAuthentication = True
    publisher.Create()

    ' Enable AdventureWorks2012 as a publication database.
    publicationDb = New ReplicationDatabase(publicationDbName, conn)

    publicationDb.EnabledTransPublishing = True
    publicationDb.EnabledMergePublishing = True

Catch ex As Exception
    ' Implement appropriate error handling here.
    Throw New ApplicationException("An error occured when installing distribution and publishing.", ex)

Finally
    conn.Disconnect()

End Try

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Vea también

Conceptos

Ver y modificar las propiedades del distribuidor y del publicador

Configurar la publicación y la distribución

Conceptos sobre los procedimientos almacenados del sistema de replicación

Configurar la distribución

Conceptos de los Replication Management Objects (RMO)

Configurar la replicación para grupos de disponibilidad AlwaysOn (SQL Server)