Como exibir e modificar as propriedades do Publicador e do Distribuidor (programação RMO)

Você pode exibir e modificar de forma programada as propriedades do Publicador e do Distribuidor usando RMO (Replication Management Objects).

Para exibir e modificar as propriedades do Distribuidor

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection.

  2. Crie uma instância da classe ReplicationServer. Passe o objeto ServerConnection da etapa 1.

  3. (Opcional) Verificar a propriedade IsDistributor para verificar se o servidor conectado no momento é um Distribuidor.

  4. Chame o método Load para obter as propriedades do servidor.

  5. (Opcional) Para alterar as propriedades, defina um novo valor para uma ou mais propriedades do Distribuidor que podem ser definidas no objeto ReplicationServer.

  6. (Opcional) Se a propriedade CachePropertyChanges no objeto ReplicationServer é definida para true, chame o método CommitPropertyChanges para confirmar as alterações para o servidor.

Para exibir e modificar as propriedades do banco de dados de distribuição

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection.

  2. Crie uma instância da classe DistributionDatabase. Especifique o nome da propriedade e passe o objeto ServerConnection da etapa 1.

  3. Chame o método LoadProperties para obter as propriedades do servidor. Se este método retornar false, o banco de dados com o nome especificado não existirá no servidor.

  4. (Opcional) Para alterar as propriedades, defina um novo valor para uma ou mais propriedades do DistributionDatabase que podem ser definidas.

  5. (Opcional) Se a propriedade CachePropertyChanges no objeto DistributionDatabase é definida para true, chame o método CommitPropertyChanges para confirmar as alterações para o servidor.

Para exibir e modificar as propriedades do Publicador

  1. Crie uma conexão com o Publicador usando a classe ServerConnection.

  2. Crie uma instância da classe DistributionPublisher. Especifique a propriedade Name e passe o objeto ServerConnection da etapa 1.

  3. (Opcional) Para alterar as propriedades, defina um novo valor para uma ou mais propriedades do DistributionPublisher que podem ser definidas.

  4. (Opcional) Se a propriedade CachePropertyChanges no objeto DistributionPublisher é definida para true, chame o método CommitPropertyChanges para confirmar as alterações para o servidor.

Para alterar a senha para a conexão administrativa do Publicador para o Distribuidor

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection.

  2. Crie uma instância da classe ReplicationServer.

  3. Defina a propriedade ConnectionContext para a conexão criada na etapa 1.

  4. Chame o método Load para obter as propriedades do objeto.

  5. Chame o método ChangeDistributorPassword. Passe o novo valor de senha para o parâmetro password.

    Observação sobre segurançaObservação sobre segurança

    Quando possível, solicite que os usuários insiram as credenciais de segurança em tempo de execução. Se for preciso armazenar credenciais, use os serviços criptográficos fornecidos pelo Microsoft Windows .NET Framework.

  6. (Opcional) Execute as etapas seguintes para alterar a senha em cada Publicador remoto que usa esse Distribuidor:

    1. Crie uma conexão com o Publicador usando a classe ServerConnection.

    2. Crie uma instância da classe ReplicationServer.

    3. Defina a propriedade ConnectionContext para a conexão criada na etapa 6a.

    4. Chame o método Load para obter as propriedades do objeto.

    5. Chame o método ChangeDistributorPassword. Passe o novo valor de senha da etapa 5 para o parâmetro password.

Exemplo

Este exemplo mostra como alterar a Distribuição e as propriedades do banco de dados de distribuição.

Observação sobre segurançaObservação sobre segurança

Para evitar credenciais de armazenagem no código, a nova senha do Distribuidor é fornecida a tempo de execução.

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