Compartir vía


Ver y modificar las propiedades del distribuidor y del publicador

Se aplica a: SQL Server Azure SQL Managed Instance

Obtenga información sobre cómo ver y modificar las propiedades de publicación en SQL Server mediante SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO).

En este tema

Antes de empezar

Recomendaciones

  • Para los publicadores que ejecutan versiones anteriores a Microsoft SQL Server 2005 (9.x), un usuario del rol fijo de servidor sysadmin puede registrar suscriptores en la página Suscriptores. A partir de SQL Server 2005 (9.x), ya no es necesario registrar explícitamente los suscriptores para la replicación.

Seguridad

Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución.

Uso de SQL Server Management Studio

Para ver y modificar las propiedades del distribuidor

  1. Conéctese al distribuidor en SQL Server Management Studio y expanda el nodo de servidor.

  2. Haga clic con el botón secundario en la carpeta Replicación y, a continuación, haga clic en Propiedades del distribuidor.

  3. Vea y modifique las propiedades en el cuadro de diálogo Propiedades del distribuidor<: distribuidor>.

    • Para ver y modificar las propiedades de una base de datos de distribución, haga clic en el botón de propiedades (...) de la base de datos en la página General del cuadro de diálogo.

    • Para ver y modificar las propiedades del publicador asociado al distribuidor, haga clic en el botón de propiedades (...) del publicador en el cuadro de diálogo publicador .

    • Para obtener acceso a los perfiles de los agentes de replicación, haga clic en el botón Valores predeterminados de perfil de la página General del cuadro de diálogo. Para obtener más información, consulte Replication Agent Profiles.

    • Para cambiar la contraseña de la cuenta utilizada cuando los procedimientos almacenados administrativos se ejecutan en el publicador y actualizar la información del distribuidor, escriba una contraseña nueva en los cuadros Contraseña y Confirmar contraseña de la página Publicadores del cuadro de diálogo. Para más información, vea Proteger el distribuidor.

  4. Modifique las propiedades si es necesario y, a continuación, haga clic en Aceptar.

Para ver y modificar las propiedades del Publicador

  1. Conéctese al publicador en SQL Server Management Studio 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, haga clic en Propiedades del publicador.

  3. Vea y modifique las propiedades en el cuadro de diálogo Propiedades del publicador - < Publicador>.

    • Un usuario del rol fijo de servidor sysadmin puede habilitar bases de datos de replicación en la página Bases de datos de publicaciones . Al habilitar una base de datos no se publica dicha base de datos, sino que permite que cualquier usuario del rol fijo de base de datos db_owner para esa base de datos cree una o varias publicaciones en la base de datos.
  4. Modifique las propiedades si es necesario y, a continuación, haga clic en Aceptar.

Usar Transact-SQL

Las propiedades del publicador y del distributor se pueden ver mediante programación usando procedimientos almacenados de replicación.

Para ver las propiedades de la base de datos de distribución

  1. Ejecute sp_helpdistributor para devolver información sobre el Distribuidor, la base de datos de distribución y el directorio de trabajo.

  2. Ejecute sp_helpdistributiondb para devolver propiedades de una base de datos de distribución especificada.

Para cambiar las propiedades de la base de datos de distribución y el distribuidor

  1. En el distribuidor, ejecute sp_changedistributor_property para modificar las propiedades del distribuidor.

  2. En el distribuidor, ejecute sp_changedistributor_property para modificar las propiedades del distribuidor.

  3. En el distribuidor, ejecute sp_changedistributor_password para cambiar la contraseña del distribuidor.

    Importante

    Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales en un archivo de script, proteja el archivo para evitar el acceso no autorizado.

  4. En el distribuidor, ejecute sp_changedistpublisher para cambiar las propiedades de un Publicador usando el Distribuidor.

Ejemplos (Transact-SQL)

El siguiente script de Transact-SQL de ejemplo devuelve información acerca del Distribuidor y la base de datos de distribución.

-- View information about the Distributor, distribution database, 
-- working directory, and SQL Server Agent user account. 
USE master
EXEC sp_helpdistributor;
GO
-- View information about the specified distribution database. 
USE distribution
EXEC sp_helpdistributiondb;
GO

Este ejemplo cambia los períodos de retención para el Distribuidor, la contraseña usada al conectar al Distribuidor y el intervalo en el que el Distribuidor comprueba el estado de distintos agentes de replicación (también conocido como intervalo de latidos).

Importante

Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales en un archivo de script, proteja el archivo para evitar el acceso no autorizado.


-- Change the heartbeat interval at the Distributor to 5 minutes. 
USE master 
exec sp_changedistributor_property 
    @property = N'heartbeat_interval', 
    @value = 5;
GO
DECLARE @distributionDB AS sysname;
SET @distributionDB = N'distribution';

-- Change the history retention period to 24 hours and the
-- maximum retention period to 48 hours.  
USE distribution
EXEC sp_changedistributiondb @distributionDB, N'history_retention', 24
EXEC sp_changedistributiondb @distributionDB, N'max_distretention', 48
GO
-- Change the password on the Distributor. 
-- To avoid storing the password in the script file, the value is passed 
-- into SQLCMD as a scripting variable. 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".
USE master
EXEC sp_changedistributor_password $(Password)
GO

Usar Replication Management Objects (RMO)

Para ver y modificar las propiedades del distribuidor

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

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

  3. (Opcional) Compruebe la propiedad IsDistributor para comprobar que el servidor conectado actualmente es un distribuidor.

  4. Llame al método Load para recibir las propiedades del servidor.

  5. (Opcional) Para cambiar las propiedades, establezca un nuevo valor para una o más de las propiedades del distribuidor que se pueden establecer en el objeto ReplicationServer .

  6. (Opcional) Si la propiedad CachePropertyChanges del objeto ReplicationServer está establecida en true, llame al método CommitPropertyChanges para confirmar los cambios en el servidor.

Para ver y modificar las propiedades de la base de datos de distribución

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

  2. Cree una instancia de la clase DistributionDatabase. Especifique la propiedad de nombre y pase el objeto ServerConnection del paso 1.

  3. Llame al método LoadProperties para recibir las propiedades del servidor. Si este método devuelve false, significa que la base de datos con el nombre especificado no existe en el servidor.

  4. (Opcional) Para cambiar las propiedades, establezca un nuevo valor para una de las propiedades DistributionDatabase que se pueden establecer.

  5. (Opcional) Si la propiedad CachePropertyChanges del objeto DistributionDatabase está establecida en true, llame al método CommitPropertyChanges para confirmar los cambios en el servidor.

Para ver y modificar las propiedades del Publicador

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

  2. Cree una instancia de la clase DistributionPublisher. Especifique la propiedad Name y pase el objeto ServerConnection del paso 1.

  3. (Opcional) Para cambiar las propiedades, establezca un nuevo valor para una de las propiedades DistributionPublisher que se pueden establecer.

  4. (Opcional) Si la propiedad CachePropertyChanges del objeto DistributionPublisher está establecida en true, llame al método CommitPropertyChanges para confirmar los cambios en el servidor.

Para cambiar la contraseña de la conexión administrativa del publicador al distribuidor

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

  2. Cree una instancia de la clase ReplicationServer.

  3. Establezca la propiedad ConnectionContext en la conexión creada en el paso 1.

  4. Llame al método Load para obtener las propiedades del objeto.

  5. Llame al método ChangeDistributorPassword. Pase el nuevo valor de contraseña para el parámetro password .

    Importante

    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 Microsoft Windows .NET Framework.

  6. (Opcional) Realice los pasos siguientes para cambiar la contraseña en cada publicador remoto que utilice este distribuidor:

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

    2. Cree una instancia de la clase ReplicationServer.

    3. Establezca la propiedad ConnectionContext en la conexión creada en el paso 6a.

    4. Llame al método Load para obtener las propiedades del objeto.

    5. Llame al método ChangeDistributorPassword. Pase el nuevo valor de contraseña del paso 5 para el parámetro password .

Ejemplo (RMO)

Este ejemplo muestra cómo cambiar las propiedades de Distribución y de la base de datos de distribución.

Importante

Para no almacenar las credenciales en el código, la nueva contraseña del distribuidor se proporciona en tiempo de ejecución.

// Set the Distributor and distribution database names.
string distributionDbName = "distribution";
string distributorName = publisherInstance;

ReplicationServer distributor;
DistributionDatabase distributionDb;

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

try
{
    // Open the connection. 
    conn.Connect();

    distributor = new ReplicationServer(conn);

    // Load Distributor properties, if it is installed.
    if (distributor.LoadProperties())
    {
        // Password supplied at runtime.
        distributor.ChangeDistributorPassword(password);
        distributor.AgentCheckupInterval = 5;

        // Save changes to the Distributor properties.
        distributor.CommitPropertyChanges();
    }
    else
    {
        throw new ApplicationException(
            String.Format("{0} is not a Distributor.", publisherInstance));
    }

    // Create an object for the distribution database 
    // using the open Distributor connection.
    distributionDb = new DistributionDatabase(distributionDbName, conn);

    // Change distribution database properties.
    if (distributionDb.LoadProperties())
    {
        // Change maximum retention period to 48 hours and history retention 
        // period to 24 hours.
        distributionDb.MaxDistributionRetention = 48;
        distributionDb.HistoryRetention = 24;

        // Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges();
    }
    else
    {
        // Do something here if the distribution database does not exist.
    }
}
catch (Exception ex)
{
    // Implement the appropriate error handling here. 
    throw new ApplicationException("An error occurred when changing Distributor " +
        " or distribution database properties.", ex);
}
finally
{
    conn.Disconnect();
}
' Set the Distributor and distribution database names.
Dim distributionDbName As String = "distribution"
Dim distributorName As String = publisherInstance

Dim distributor As ReplicationServer
Dim distributionDb As DistributionDatabase

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

Try
    ' Open the connection. 
    conn.Connect()

    distributor = New ReplicationServer(conn)

    ' Load Distributor properties, if it is installed.
    If distributor.LoadProperties() Then
        ' Password supplied at runtime.
        distributor.ChangeDistributorPassword(password)
        distributor.AgentCheckupInterval = 5

        ' Save changes to the Distributor properties.
        distributor.CommitPropertyChanges()
    Else
        Throw New ApplicationException( _
            String.Format("{0} is not a Distributor.", publisherInstance))
    End If

    ' Create an object for the distribution database 
    ' using the open Distributor connection.
    distributionDb = New DistributionDatabase(distributionDbName, conn)

    ' Change distribution database properties.
    If distributionDb.LoadProperties() Then
        ' Change maximum retention period to 48 hours and history retention 
        ' period to 24 hours.
        distributionDb.MaxDistributionRetention = 48
        distributionDb.HistoryRetention = 24

        ' Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges()
    Else
        ' Do something here if the distribution database does not exist.
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here. 
    Throw New ApplicationException("An error occurred when changing Distributor " + _
        " or distribution database properties.", ex)
Finally
    conn.Disconnect()
End Try