Validar os dados replicados

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Este tópico descreve como validar dados no Assinante no SQL Server usando o SQL Server Management Studio, o Transact-SQL ou o RMO (Replication Management Objects).

A replicação transacional e a replicação de mescla permitem validar se os dados no Assinante correspondem aos dados no Publicador. A validação pode ser executada para assinaturas específicas ou para todas as assinaturas em uma publicação. Especifique um dos seguintes tipos de validação e o Agente de Distribuição ou o Agente de Mesclagem validarão os dados na próxima vez que executarem:

  • Somente contagem de linhas. Valida se a tabela no Assinante tem o mesmo número de linhas que a tabela no Publicador, mas não valida se o conteúdo das linhas corresponde. A validação de número de linhas fornece uma abordagem superficial à validação que pode alertá-lo sobre problemas com seus dados.
  • Contagem de linhas e soma de verificação binária. Além de contar o número de linhas no Publicador e no Assinante, uma soma de verificação de todos os dados é calculada usando o algoritmo de soma de verificação. Se a contagem de linhas falhar, a soma de verificação não será executada.

Além de validar se os dados no Assinante e no Publicador correspondem, a replicação de mesclagem permite validar se os dados estão particionados corretamente para cada Assinante. Para obter mais informações, consulte Validate Partition Information for a Merge Subscriber (Validar informações de partição para um assinante de mesclagem).

Observação

A Instância Gerenciada de SQL do Azure pode atuar como publicador, distribuidor e assinante da replicação de instantâneo e transacional. Os bancos de dados do Banco de Dados SQL do Azure só podem ser assinantes por push para a replicação transacional e de instantâneo. Para obter mais informações, confira Replicação transacional com o Banco de Dados SQL do Azure e a Instância Gerenciada de SQL do Azure.

Como a validação de dados trabalha

O SQL Server faz a validação dos dados calculando o número de linhas ou uma soma de verificação no Publicador e comparando esses valores com o número de linhas ou a soma de verificação do Assinante. Um valor é calculado para a publicação inteira e um valor é calculado para a tabela de assinatura inteira, mas os dados em text, ntextou as colunas de image não são incluídas nos cálculos.

Enquanto os cálculos são realizados, bloqueios compartilhados são aplicados temporariamente às tabelas nas quais está sendo feita a contagem de linhas ou o cálculo de somas de verificação, mas os cálculos são concluídos rapidamente e os bloqueios compartilhados são removidos, geralmente em poucos segundos.

Quando as somas de verificação binárias são usadas, ocorre uma verificação de redundância (CRC) de 32 bits coluna a coluna, em vez de uma CRC na linha física da página de dados. Isso permite que as colunas da tabela possam estar fisicamente em qualquer ordem na página de dados, mas ainda assim resultem no mesmo CRC para a linha. A validação por soma de verificação binária pode ser usada quando existirem filtros de linha ou de coluna na publicação.

A validação de dados é um processo de três etapas:

  1. Uma única assinatura ou todas as assinaturas para uma publicação são marcadas para validação. Marque as assinaturas para validação nas caixas de diálogo Validar Assinatura, Validar Assinaturas e Validar Todas as Assinaturas, que estão disponíveis na pasta Publicações Locais e na pasta Assinaturas Locais no Microsoft SQL Server Management Studio. Você também pode marcar assinaturas na guia Todas as Assinaturas, na guia Lista de Monitoramento de Assinaturas e no nó de publicações do Replication Monitor. Para obter informações sobre como iniciar o Replication Monitor, consulte Start the Replication Monitor (Iniciar o Replication Monitor).

  2. Uma assinatura é validada na próxima vez que for sincronizada pelo Agente de Distribuição (para replicação transacional) ou pelo Agente de Mesclagem (para replicação de mesclagem). O Agente de Distribuição normalmente é executado continuamente, nesse caso a validação ocorre imediatamente; o Agente de Mesclagem normalmente é executado por solicitação, neste caso a validação ocorrerá após você executar o agente.

  3. Exibir os resultados de validação:

    • Nas janelas de detalhes do Replication Monitor: na guia Histórico do Distribuidor para o Assinante para replicação transacional e na guia Histórico de Sincronização para replicação de mesclagem.
    • Na caixa de diálogo Exibir Status de Sincronização no Management Studio.

Considerações e restrições

Considere os seguintes problemas ao validar dados:

  • Você deve interromper toda a atividade de atualização nos Assinantes antes de validar os dados (não é necessário interromper a atividade no Publicador quando a validação estiver ocorrendo).
  • Como as somas de verificação e as somas de verificação binárias podem exigir grandes quantidades de recursos do processador ao validar um grande conjunto de dados, você deve agendar a validação para ocorrer quando houver menos atividade nos servidores usados pela replicação.
  • A replicação valida apenas tabelas; ela não valida se os artigos somente de esquema (como procedimentos armazenados) são os mesmos no Publicador e no Assinante.
  • A soma de verificação binária pode ser usada com qualquer tabela publicada. O checksum não pode validar tabelas com filtros de coluna nem estruturas lógicas de tabela em que os deslocamentos das colunas diferem (devido a instruções ALTER TABLE que removem ou adicionam colunas).
  • A validação de replicação usa as funções checksum e binary_checksum . Para informações sobre seu comportamento, consulte CHECKSUM (Transact-SQL) e BINARY_CHECKSUM (Transact-SQL).
  • A validação usando soma de verificação binária ou soma de verificação pode relatar incorretamente uma falha se os tipos de dados forem diferentes no Assinante do que no Publicador. Isso poderá acontecer se você fizer o seguinte:
    • Definir explicitamente opções de esquema para mapear tipos de dados de versões anteriores do SQL Server.
    • Definir o nível de compatibilidade de publicação para uma publicação de mesclagem com uma versão anterior do SQL Server, quando as tabelas publicadas contiverem um ou mais tipos de dados que precisem ser mapeados para essa versão.
    • Inicialize manualmente uma assinatura que use tipos de dados diferentes no Assinante.
  • As validações de soma de verificação binária e de soma de verificação não são suportadas para assinaturas transformáveis em replicação transacional.
  • A validação não oferece suporte para os dados replicados em não assinantes do SQL Server.
  • Os procedimentos para o Replication Monitor são somente para assinaturas push porque as assinaturas pull não podem ser sincronizadas no Replication Monitor. Porém, você pode marcar uma assinatura para validação e exibir os resultados da validação para assinaturas pull no Replication Monitor.
  • Os resultados da validação indicam se a validação obteve êxito ou se falhou, porém não especifica quais linhas falharam a validação caso tenha ocorrido uma falha. Para comparar dados entre o Publicador e o Assinante, use o utilitário tablediff. Para obter informações sobre como usar esse utilitário com os dados replicados, consulte Comparar diferenças em tabelas replicadas (programação de replicação).

Resultados da validação de dados

Quando a validação estiver completa, o Agente de Distribuição ou o Agente de Mesclagem registra mensagens relativas ao êxito ou falha (a replicação não informa quais as linhas que falharam). Essas mensagens podem ser exibidas no SQL Server Management Studio, no Replication Monitor e nas tabelas do sistema de replicação. O tópico de instruções listado acima mostra como executar a validação e exibir os resultados.

Para controlar as falhas de validação, considere o seguinte:

Artigos em Replicação Transacional

Como usar o SQL Server Management Studio.

  1. Conecte-se ao Publicador no SQL Server Management Studio e expanda o nó do servidor.
  2. Expanda a pasta Replicação e, em seguida, a pasta Publicações Locais .
  3. Clique com o botão direito do mouse na publicação para a qual você quer validar assinaturas e então clique em Validar Assinaturas.
  4. Na caixa de diálogo Validar Assinaturas, selecione quais assinatura validar:
    • Selecione Validar todas as assinaturas SQL Server
    • Selecione Validar estas assinaturase então selecione uma ou mais assinaturas.
  5. Para especificar o tipo de validação a ser executado (contagem de linha ou contagem de linha e soma de verificação) clique em Opções de Validaçãoe então especifique as opções na caixa de diálogo Opções de Validação de Assinatura .
  6. Selecione OK.
  7. Exiba os resultados da validação no Replication Monitor ou a caixa de diálogo Exibir Status da Sincronização . Para cada assinatura:
    1. Expanda a publicação, clique com o botão direito do mouse na assinatura e então clique em Exibir Status da Sincronização.
    2. Se o agente não estiver sendo executado clique em Iniciar na caixa de diálogo Exibir Status da Sincronização . A caixa de diálogo exibirá mensagens informativas relacionadas à validação.
      Se você não vir nenhuma mensagem relacionada à validação, o agente já registrou uma mensagem subsequente. Neste caso, exiba os resultados de validação no Replication Monitor. Para obter mais informações, consulte os procedimentos de instruções do Replication Monitor neste tópico.

Usando o Transact-SQL

Todos os artigos

  1. No servidor Publicador, no banco de dados de publicação, execute sp_publication_validation (Transact-SQL). Especifique @publication e um dos valores seguintes para @rowcount_only:

    • 1 - apenas verifica número de linhas (o padrão)
    • 2 - número de linhas e soma de verificação binária.

    Observação

    Ao executar sp_publication_validation (Transact-SQL), sp_article_validation (Transact-SQL) é executado para cada artigo na publicação. Para executar sp_publication_validation (Transact-SQL) com êxito, é necessário ter permissões SELECT em todas as colunas nas tabelas base publicadas.

  2. (Opcional) Inicie o Agente de Distribuição para cada assinatura, caso ainda não esteja em execução. Para obter mais informações, consulte Synchronize a Pull Subscription e Synchronize a Push Subscription.

  3. Verifique a saída do agente para ver o resultado da validação.

Artigo único

  1. No Publicador, no banco de dados de publicação, execute sp_article_validation (Transact-SQL). Especifique @publication, o nome do artigo para @article e um dos valores seguintes como @rowcount_only:

    • 1 - apenas verifica número de linhas (o padrão)
    • 2 - número de linhas e soma de verificação binária.

    Observação

    Para executar sp_article_validation (Transact-SQL) com sucesso, você deve ter permissões SELECT em todas as colunas da tabela base publicada.

  2. (Opcional) Inicie o Agente de Distribuição para cada assinatura, caso ainda não esteja em execução. Para obter mais informações, consulte Synchronize a Pull Subscription e Synchronize a Push Subscription.

  3. Verifique a saída do agente para ver o resultado da validação.

Assinante único

  1. No servidor Publicador, no banco de dados de publicação, abra uma transação explícita usando BEGIN TRANSACTION (Transact-SQL).

  2. No Publicador, no banco de dados de publicação, execute sp_marksubscriptionvalidation (Transact-SQL). Especifique a publicação para @publication, o nome do Assinante para @subscriber e o nome do banco de dados de assinatura para @destination_db.

  3. (Opcional) Repita a etapa 2 para cada assinatura que é validada.

  4. No banco de dados de publicação do Publicador, execute sp_article_validation (Transact-SQL). Especifique @publication, o nome do artigo para @article e um dos valores seguintes como @rowcount_only:

    • 1 - apenas verifica número de linhas (o padrão)
    • 2 - Contagem de linhas e soma de verificação binária.

    Observação

    Para executar sp_article_validation (Transact-SQL) com sucesso, você deve ter permissões SELECT em todas as colunas da tabela base publicada.

  5. No Publicador do banco de dados de publicação, confirme a transação usando COMMIT TRANSACTION (Transact-SQL).

  6. (Opcional) Repita as etapas 1 a 5 para cada artigo que é validado.

  7. (Opcional) Iniciar o Agente de Distribuição se já não estiver em execução. Para obter mais informações, consulte Synchronize a Pull Subscription e Synchronize a Push Subscription.

  8. Verifique a saída do agente para ver o resultado da validação. Para obter mais informações, consulte Validar dados no assinante.

Todas as assinaturas por push para uma publicação transacional

Usando o Monitor de Replicação

  1. No Replication Monitor, expanda um Grupo do publicador no painel esquerdo e, depois, expanda um Publicador.

  2. Clique com o botão direito do mouse na publicação para a qual você quer validar assinaturas e então clique em Validar Assinaturas.

  3. Na caixa de diálogo Validar Assinaturas , selecione quais assinatura validar:

    • Selecione Validar todas as assinaturas SQL Server
    • Selecione Validar estas assinaturase então selecione uma ou mais assinaturas.
  4. Para especificar o tipo de validação a ser executado (contagem de linha ou contagem de linha e soma de verificação) clique em Opções de Validaçãoe então especifique as opções na caixa de diálogo Opções de Validação de Assinatura .

  5. Selecione OK.

  6. Clique na guia Todas as assinaturas.

  7. Exiba os resultados da validação. Para cada assinatura push:

    1. Se o agente não estiver sendo executado, clique com o botão direito do mouse na assinatura e então clique em Iniciar Sincronização.
    2. Clique com o botão direito do mouse na assinatura e, em seguida, clique em Exibir Detalhes.
    3. Visualize informações na guia Histórico do Distribuidor para o Assinante na área de texto Ações na sessão selecionada.

Para uma assinatura única para uma Publicação de Mesclagem

Como usar o SQL Server Management Studio.

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

  2. Expanda a pasta Replicação e, em seguida, a pasta Publicações Locais .

  3. Expanda a publicação para a qual você quer validar assinaturas, clique com o botão direito do mouse na assinatura e então clique em Validar Assinatura.

  4. Na caixa de diálogo Validar Assinatura , selecione Validar esta assinatura.

  5. Para especificar o tipo de validação a ser executado (contagem de linha ou contagem de linha e soma de verificação) clique em Opçõese então especifique as opções na caixa de diálogo Opções de Validação de Assinatura .

  6. Selecione OK.

  7. Exiba os resultados da validação no Replication Monitor ou a caixa de diálogo Exibir Status da Sincronização :

    1. Expanda a publicação, clique com o botão direito do mouse na assinatura e então clique em Exibir Status da Sincronização.
    2. Se o agente não estiver sendo executado clique em Iniciar na caixa de diálogo Exibir Status da Sincronização . A caixa de diálogo exibirá mensagens informativas relacionadas à validação.

    Se você não vir nenhuma mensagem relacionada à validação, o agente já registrou uma mensagem subsequente. Neste caso, exiba os resultados de validação no Replication Monitor. Para obter mais informações, consulte os procedimentos de instruções do Replication Monitor neste tópico.

Para todas as assinaturas de uma publicação mesclada

Como usar o SQL Server Management Studio.

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

  2. Expanda a pasta Replicação e, em seguida, a pasta Publicações Locais .

  3. Clique com o botão direito do mouse na publicação para a qual você quer validar assinaturas e então clique em Validar Todas as Assinaturas.

  4. Na caixa de diálogo Validar Todas as Assinaturas, especifique o tipo de validação a ser executado (contagem de linhas ou contagem de linhas e soma de verificação).

  5. Selecione OK.

  6. Exiba os resultados da validação no Replication Monitor ou a caixa de diálogo Exibir Status da Sincronização . Para cada assinatura:

    1. Expanda a publicação, clique com o botão direito do mouse na assinatura e então clique em Exibir Status da Sincronização.
    2. Se o agente não estiver sendo executado clique em Iniciar na caixa de diálogo Exibir Status da Sincronização . A caixa de diálogo exibirá mensagens informativas relacionadas à validação.

    Se você não vir nenhuma mensagem relacionada à validação, o agente já registrou uma mensagem subsequente. Neste caso, exiba os resultados de validação no Replication Monitor. Para obter mais informações, consulte os procedimentos de instruções do Replication Monitor neste tópico.

Para uma única assinatura push para uma Publicação de Mesclagem

Usando o Monitor de Replicação

  1. No Replication Monitor, expanda um grupo de Publicadores no painel esquerdo, expanda um Publicador e clique em uma publicação.
  2. Clique na guia Todas as assinaturas.
  3. Clique com o botão direito do mouse na assinatura que você quer validar, depois clique em Validar Assinatura.
  4. Na caixa de diálogo Validar Assinatura , selecione Validar esta assinatura.
  5. Para especificar o tipo de validação a ser executado (contagem de linha ou contagem de linha e soma de verificação) clique em Opçõese então especifique as opções na caixa de diálogo Opções de Validação de Assinatura .
  6. Selecione OK.
  7. Clique na guia Todas as assinaturas.
  8. Exiba os resultados da validação:
    1. Se o agente não estiver sendo executado, clique com o botão direito do mouse na assinatura e então clique em Iniciar Sincronização.
    2. Clique com o botão direito do mouse na assinatura e, em seguida, clique em Exibir Detalhes.
    3. Exiba informações na guia Histórico de Sincronização na área de texto Última mensagem da sessão selecionada .

Usando o Transact-SQL

  1. No Publicador, no banco de dados de publicação, execute sp_validatemergesubscription (Transact-SQL). Especifique @publication, o nome do Assinante para @subscriber, o nome do banco de dados de assinatura para @subscriber_db e um dos valores seguintes para @level:

    • 1 - validação apenas da contagem de linhas.
    • 3 - validação de soma de verificação binária de número de linhas.

    Isso marca a assinatura selecionada para validação.

  2. Inicie o agente de mesclagem para cada assinatura. Para obter mais informações, consulte Synchronize a Pull Subscription e Synchronize a Push Subscription.

  3. Verifique a saída do agente para ver o resultado da validação.

  4. Repita as etapas 1 a 3 para cada assinatura que é validada.

Observação

Uma assinatura de uma publicação de mesclagem também pode ser validada ao final de uma sincronização, especificando o parâmetro -Validate ao executar o Replication Agente de Mesclagem.

Para todas as assinaturas push de uma publicação de mesclagem

Usando o Monitor de Replicação

  1. No Replication Monitor, expanda um Grupo do publicador no painel esquerdo e, depois, expanda um Publicador.
  2. Clique com o botão direito do mouse na publicação para a qual você quer validar assinaturas e então clique em Validar Todas as Assinaturas.
  3. Na caixa de diálogo Validar Todas as Assinaturas, especifique o tipo de validação a ser executado (contagem de linhas ou contagem de linhas e soma de verificação).
  4. Selecione OK.
  5. Clique na guia Todas as assinaturas.
  6. Exiba os resultados da validação. Para cada assinatura push:
    1. Se o agente não estiver sendo executado, clique com o botão direito do mouse na assinatura e então clique em Iniciar Sincronização.
    2. Clique com o botão direito do mouse na assinatura e, em seguida, clique em Exibir Detalhes.
    3. Exiba informações na guia Histórico de Sincronização na área de texto Última mensagem da sessão selecionada .

Usando o Transact-SQL

  1. No Publicador do banco de dados de publicação, execute sp_validatemergepublication (Transact-SQL). Especifique @publication e um dos valores seguintes para @level:

    • 1 - validação apenas da contagem de linhas.
    • 3 - validação de soma de verificação binária de número de linhas.

    Isso marca todas as assinaturas para validação.

  2. Inicie o agente de mesclagem para cada assinatura. Para obter mais informações, consulte Synchronize a Pull Subscription e Synchronize a Push Subscription.

  3. Verifique a saída do agente para ver o resultado da validação. Para obter mais informações, consulte Validar dados no assinante.

Validar dados usando os parâmetros do Agente de Mesclagem

  1. Inicie o Agente de Mesclagem no Assinante (assinatura pull) ou no Distribuidor (assinatura push) a partir do prompt de comando, de uma das seguintes maneiras.

    • Especificando o valor de 1 (número de linhas) ou 3 (número de linhas e soma de verificação binária) para o parâmetro -Validate .
    • Especificar validação de contagem de linhas ou validação de contagem de linhas e de soma de verificação para o parâmetro -ProfileName.

    Para obter mais informações, consulte Synchronize a Pull Subscription ou Synchronize a Push Subscription.

Usando os Objetos de Gerenciamento de Replicação (RMO)

A replicação permite que você use os RMO (Replication Management Objects) para validar programaticamente se os dados no Assinante correspondem aos dados no Publicador. Os objetos usados dependem do tipo de topologia de replicação. A replicação transacional requer a validação de todas as assinaturas de uma publicação.

Observação

Para obter um exemplo, consulte Exemplo (RMO)posteriormente nesta seção.

Para validar dados para todos os artigos em uma publicação transacional

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

  2. Criar uma instância da classe TransPublication. Defina as propriedades Name e DatabaseName para a publicação. Defina a propriedade ConnectionContext para a conexão criada na etapa 1.

  3. Chame o método LoadProperties para obter as propriedades remanescentes do objeto. Se esse método retornar false, as propriedades de publicação na etapa 2 foram definidas incorretamente ou a publicação não existe.

  4. Chame o método ValidatePublication . Passe o seguinte:

    Isso marca os artigos para validação.

  5. Se ainda não estiver executando, inicie o Agente de Distribuição para sincronizar cada assinatura. Para obter mais informações, consulte Synchronize a Push Subscription ou Synchronize a Pull Subscription. O resultado da operação de validação é escrito no histórico do agente. Para obter mais informações, consulte Monitoring Replication.

Validar dados em todas as assinaturas de uma publicação de mesclagem

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

  2. Criar uma instância da classe MergePublication. Defina as propriedades Name e DatabaseName para a publicação. Defina a propriedade ConnectionContext para a conexão criada na etapa 1.

  3. Chame o método LoadProperties para obter as propriedades remanescentes do objeto. Se esse método retornar false, as propriedades de publicação na etapa 2 foram definidas incorretamente ou a publicação não existe.

  4. Chame o método ValidatePublication . Passe o valor desejado ValidationOption.

  5. Execute o Agente de Mesclagem para iniciar a validação de cada assinatura ou aguarde a próxima execução agendada do agente. Para obter mais informações, consulte Synchronize a Pull Subscription e Synchronize a Push Subscription. O resultado da operação de validação é gravado no histórico de agente que você exibe usando o Replication Monitor. Para obter mais informações, consulte Monitoring Replication.

Para validar os dados em uma única assinatura de uma publicação de mesclagem

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

  2. Criar uma instância da classe MergePublication. Defina as propriedades Name e DatabaseName para a publicação. Defina a propriedade ConnectionContext para a conexão criada na etapa 1.

  3. Chame o método LoadProperties para obter as propriedades remanescentes do objeto. Se esse método retornar false, as propriedades de publicação na etapa 2 foram definidas incorretamente ou a publicação não existe.

  4. Chame o método ValidateSubscription . Passe o nome do Assinante e banco de dados de assinatura que estão sendo validados e o ValidationOptiondesejado.

  5. Execute o Agente de Mesclagem da assinatura para iniciar a validação ou aguarde a próxima execução agendada do agente. Para obter mais informações, consulte Synchronize a Pull Subscription e Synchronize a Push Subscription. O resultado da operação de validação é gravado no histórico de agente que você exibe usando o Replication Monitor. Para obter mais informações, consulte Monitoring Replication.

Exemplo (RMO)

Este exemplo marca todas as assinaturas de uma publicação transacional para validação da contagem de linhas.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";

TransPublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new TransPublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;

    // If we can't get the properties for this publication, 
    // throw an application exception.
    if (publication.LoadProperties())
    {
        // Initiate validataion for all subscriptions to this publication.
        publication.ValidatePublication(ValidationOption.RowCountOnly,
            ValidationMethod.ConditionalFast, false);

        // If not already running, start the Distribution Agent at each 
        // Subscriber to synchronize and validate the subscriptions.
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(
        "Subscription validation could not be initiated.", ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"

Dim publication As TransPublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this publication, 
    ' throw an application exception.
    If publication.LoadProperties() Then

        ' Initiate validataion for all subscriptions to this publication.
        publication.ValidatePublication(ValidationOption.RowCountOnly, _
         ValidationMethod.ConditionalFast, False)

        ' If not already running, start the Distribution Agent at each 
        ' Subscriber to synchronize and validate the subscriptions.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
     "Subscription validation could not be initiated.", ex)
Finally
    conn.Disconnect()
End Try

Este exemplo define uma assinatura específica em uma publicação de mesclagem para validação da contagem de linhas.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";

MergePublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new MergePublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;


    // If we can't get the properties for this merge publication, then throw an application exception.
    if (publication.LoadProperties())
    {
        // Initiate validation of the specified subscription.
        publication.ValidateSubscription(subscriberName,
            subscriptionDbName, ValidationOption.RowCountOnly);
        
        // Start the Merge Agent to synchronize and validate the subscription.
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(String.Format(
        "The subscription at {0} to the {1} publication could not " +
        "be validated.", subscriberName, publicationName), ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2022"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2022Replica"

Dim publication As MergePublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this merge publication, then throw an application exception.
    If publication.LoadProperties() Then
        ' Initiate validation of the specified subscription.
        publication.ValidateSubscription(subscriberName, _
         subscriptionDbName, ValidationOption.RowCountOnly)

        ' Start the Merge Agent to synchronize and validate the subscription.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException(String.Format( _
     "The subscription at {0} to the {1} publication could not " + _
     "be validated.", subscriberName, publicationName), ex)
Finally
    conn.Disconnect()
End Try

Confira também

Práticas recomendadas para administração de replicação