Cómo ver y modificar las propiedades del publicador y del distribuidor (programación con RMO)

Puede ver y modificar mediante programación las propiedades del publicador y el distribuidor utilizando Objetos de administración de replicación (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 en el objeto ReplicationServer está establecida en true, llame al método CommitPropertyChanges para confirmar los cambios al 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 en el objeto DistributionDatabase está establecida en true, llame al método CommitPropertyChanges para confirmar los cambios al 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.

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

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

Nota de seguridadNota de seguridad

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 occured 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 occured when changing Distributor " + _
        " or distribution database properties.", ex)
Finally
    conn.Disconnect()
End Try