Exibir e modificar propriedades de Publicador e Distribuidor

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Este tópico descreve como exibir e modificar propriedades do Distribuidor e do Publicador no SQL Server usando o SQL Server Management Studio, o Transact-SQL ou o RMO (Replication Management Objects).

Neste tópico

Antes de começar

Recomendações

  • Nas versões de Publicadores anteriores ao Microsoft SQL Server 2005 (9.x), um usuário na função de servidor fixa sysadmin pode registrar Assinantes na página Assinantes. A partir do SQL Server 2005 (9.x), não é mais necessário registrar Assinantes explicitamente para replicação.

Segurança

Quando possível, solicite que os usuários insiram as credenciais de segurança em tempo de execução.

Como usar o SQL Server Management Studio.

Para exibir e modificar as propriedades do Distribuidor

  1. No SQL Server Management Studio, conecte-se ao Distribuidor e expanda o nó de servidor.

  2. Clique com o botão direito do mouse na pasta Replicação e em seguida clique em Propriedades do Distribuidor.

  3. Exibir e modificar as propriedades na caixa de diálogo Propriedades do Distribuidor – <Distribuidor>.

    • Para exibir e modificar as propriedades de um banco de dados de distribuição, clique no botão de propriedades (...) do banco de dados na página Geral da caixa de diálogo.

    • Para exibir e modificar as propriedades do Publicador associado ao Distribuidor, clique no botão de propriedades () para o Publicador na página Publicadores da caixa de diálogo.

    • Para acessar os perfis para os agentes de replicação, clique no botão Padrões de Perfil na página Geral da caixa de diálogo. Para saber mais, confira Replication Agent Profiles.

    • Para alterar a senha da conta usada quando os procedimentos administrativos armazenados são executados no Publicador e para atualizar as informações no Distribuidor, digite uma senha nova nas caixas Senha e Confirmar senha na página Publicadores da caixa de diálogo. Para obter mais informações, consulte Proteger o Distribuidor.

  4. Modifique propriedades, se necessário, depois clique em OK.

Para exibir e modificar as propriedades do Publicador

  1. Conecte-se ao Publicador no SQL Server Management Studio e expanda o nó de servidor.

  2. Clique com o botão direito do mouse na pasta Replicação e, em seguida, em Propriedades do Publicador.

  3. Exibir e modificar as propriedades da caixa de diálogo Propriedades do Publicador – <Publisher>.

    • Um usuário na função de servidor fixa sysadmin pode ativar bancos de dados para replicação na página Bancos de Dados de Publicação . Habilitando um banco de dados não publica esse banco de dados, mas permite que qualquer usuário na função de banco de dados fixa db_owner para aquele banco de dados crie uma ou mais publicações no banco de dados.
  4. Modifique propriedades, se necessário, depois clique em OK.

Usando o Transact-SQL

As propriedades do Publicador e do Distribuidor podem ser exibidas programaticamente usando os procedimentos armazenados de replicação.

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

  1. Execute sp_helpdistributor para retornar informações sobre o Distribuidor, banco de dados de distribuição e diretório de funcionamento.

  2. Execute sp_helpdistributiondb para retornar propriedades de um banco de dados de distribuição especificado.

Para alterar as propriedades do banco de dados de distribuição e do Distribuidor

  1. No Distribuidor, execute sp_changedistributor_property para modificar as propriedades do Distribuidor.

  2. No Distribuidor, execute sp_changedistributiondb para modificar as propriedades do banco de dados de distribuição.

  3. No Distribuidor, execute sp_changedistributor_password para alterar a senha do Distribuidor.

    Importante

    Quando possível, solicite que os usuários insiram as credenciais de segurança em tempo de execução. Se você precisar armazenar credenciais em um arquivo de script, proteja o arquivo para evitar acesso não autorizado.

  4. No Distribuidor, execute sp_changedistpublisher para alterar as propriedades de um Publicador usando o Distribuidor.

Exemplos (Transact-SQL)

O seguinte exemplo de script Transact-SQL retorna as informações sobre o Distribuidor e o banco de dados de distribuição.

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

Esse exemplo altera os períodos de retenção para o Distribuidor, a senha usada quando conectando-se ao Distribuidor, e o intervalo no qual o Distribuidor verifica o status de vários agentes de replicação (também conhecidos como intervalo de heartbeat).

Importante

Quando possível, solicite que os usuários insiram as credenciais de segurança em tempo de execução. Se você precisar armazenar credenciais em um arquivo de script, proteja o arquivo para evitar acesso não 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

Usando o 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. Criar 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. Criar 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 propriedades, defina um novo valor para uma das propriedades 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. Criar uma instância da classe DistributionPublisher. Especifique a propriedade Name e passe o objeto ServerConnection da etapa 1.

  3. (Opcional) Para alterar propriedades, defina um novo valor para uma das propriedades 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. Criar 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 .

    Importante

    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. Criar 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 (RMO)

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

Importante

Para evitar credenciais de armazenagem no código, a nova senha do Distribuidor é fornecida a runtime.

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