Compartilhar via


Validar dados replicados

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

A replicação transacional e de mesclagem permite validar que os dados no Assinante correspondem aos dados no Publicador. A validação pode ser executada para assinaturas específicas ou para todas as assinaturas de uma publicação. Especifique um dos seguintes tipos de validação e o Agente de Distribuição ou o Agente de Mesclagem validará os dados na próxima vez que ele for executado:

  • Somente contagem de linhas. Isso valida se a tabela no Assinante possui o mesmo número de linhas que a tabela no Publicador, mas não verifica se o conteúdo das linhas é correspondente. A validação de contagem de linhas oferece uma abordagem leve para validação que pode ajudar a identificar 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 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 que os dados no Assinante e no Publicador correspondem, a replicação por mesclagem também oferece a capacidade de verificar se os dados estão corretamente particionados para cada Assinante. Para mais informações, consulte Validar informações de partição para um Assinante de Mesclagem.

Como funciona a validação de dados

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

Enquanto os cálculos são executados, os bloqueios compartilhados são colocados temporariamente em tabelas para as quais contagens de linhas ou somas de verificação estão sendo executadas, mas os cálculos são concluídos rapidamente e os bloqueios compartilhados são removidos, geralmente em questão de segundos.

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

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

  1. Uma única assinatura ou todas as assinaturas de uma publicação são marcadas para validação. Marque 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 MicrosoftSQL Server Management Studio. Você também pode marcar assinaturas na guia Todas as Assinaturas, na guia Lista de Observação de Assinaturas e no nó de publicações no Monitor de Replicação. Para obter informações sobre como iniciar o Replication Monitor, consulte Iniciar o Replication Monitor.

  2. Uma assinatura é validada na próxima vez em que for sincronizada pelo Agente de Distribuição (para replicação transacional) ou pelo Merge Agent (para replicação de mesclagem). O Agente de Distribuição normalmente é executado continuamente, caso em que a validação ocorre imediatamente; O Merge Agent normalmente é executado sob demanda, caso em que a validação ocorre após a execução do agente.

  3. Exiba os resultados da validação:

    • Nas janelas de detalhes do Replication Monitor: na guia Histórico do Distribuidor para 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

  • Os procedimentos do Replication Monitor são para assinaturas push apenas porque as assinaturas pull não podem ser sincronizadas no Replication Monitor. No entanto, você pode marcar uma assinatura para validação e exibir resultados de validação para assinaturas pull no Replication Monitor.
  • Os resultados da validação indicam se a validação foi bem-sucedida ou falhou, mas não especificam quais linhas falharam na validação se ocorreu uma falha. Para comparar dados no Publicador e no Assinante, use o Utilitário tablediff. Para obter mais informações sobre como usar esse utilitário com dados replicados, consulte Comparar Tabelas Replicadas para Diferenças (Programação de Replicação).

Leve em consideração os seguintes problemas ao validar dados:

  • Você deve interromper todas as atividades de atualização nos Assinantes antes de validar dados (não é necessário interromper a atividade no Publicador quando a validação está ocorrendo).

  • Como somas de verificação e somas de verificação binárias podem exigir grandes quantidades de recursos do processador ao validar um conjunto de dados grande, você deve agendar a validação para ocorrer no momento de menor atividade nos servidores usados na replicação.

  • A replicação valida apenas tabelas; ele não valida se somente os artigos 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. A soma de verificação não pode validar tabelas com filtros de coluna ou estruturas de tabela lógicas em que os deslocamentos de coluna diferem (devido a instruções ALTER TABLE que descartam ou adicionam colunas).

  • A validação de replicação usa as checksum funções e binary_checksum . Para obter 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 pode ocorrer se você fizer qualquer um dos seguintes procedimentos:

    • Defina explicitamente as opções de esquema para mapear tipos de dados para versões anteriores do SQL Server.
    • Defina o nível de compatibilidade da publicação para uma publicação de mesclagem para uma versão anterior do SQL Server e as tabelas publicadas contêm um ou mais tipos de dados que devem ser mapeados para esta versão.
    • Inicialize manualmente uma assinatura e esteja usando diferentes tipos de dados no Assinante.
  • Não há suporte para soma de verificação binária e validações de soma de verificação para assinaturas transformáveis na replicação transacional.

  • Não há suporte para validação para dados replicados para assinantes que não são do SQL Server.

Resultados da validação de dados

Quando a validação é concluída, o Agente de Distribuição ou o Agente de Mesclagem registra mensagens sobre êxito ou falha (a replicação não relata quais linhas 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 demonstra como executar a validação e exibir os resultados.

Para lidar com falhas de validação, considere o seguinte:

  • Configure o alerta de replicação chamado Replicação: o Assinante falhou na validação de dados para que você seja notificado sobre a falha. Para obter mais informações, consulte [Configurar alertas de replicação predefinidos (SQL Server Management Studio)(administration/configure-predefined-replication-alerts-sql-server-management-studio.md).

  • O fato de a validação ter falhado é um problema para seu aplicativo? Se a falha de validação for um problema, atualize manualmente os dados para que eles sejam sincronizados ou reinicialize a assinatura:

Artigos na 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 expanda a pasta Publicações Locais .

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

  4. Na caixa de diálogo Validar Assinaturas , selecione quais assinaturas validar:

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

  6. Clique em OK.

  7. Exibir resultados de validação no Replication Monitor ou na caixa de diálogo Exibir Status de Sincronização . Para cada assinatura:

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

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

Usando Transact-SQL (T-SQL)

Todos os artigos

  1. No Publisher do banco de dados de publicações, execute sp_publication_validation (Transact-SQL). Especifique @publication e um dos seguintes valores para @rowcount_only:

    • 1 – somente verificação de contagem de linhas (o padrão)
    • 2 – contagem de linhas e soma de verificação binária.

    Observação

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

  2. (Opcional) Inicie o Distribution Agent para cada assinatura se ele ainda não estiver em execução. Para obter mais informações, consulte Synchronize a Pull Subscription and Synchronize a Push Subscription.

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

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 seguintes valores para @rowcount_only:

    • 1 – Somente verificação de contagem de linhas (o padrão)
    • 2 – Contagem de linhas e soma de verificação binária.

    Observação

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

  2. (Opcional) Inicie o Distribution Agent para cada assinatura se ele ainda não estiver em execução. Para obter mais informações, consulte Sincronizar uma Assinatura de Pull e Sincronizar uma Assinatura de Push.

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

Assinante único

  1. No Publicador do 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 está sendo validada.

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

    • 1 – Somente verificação de contagem de linhas (o padrão)
    • 2 – Contagem de linhas e checksum binário.

    Observação

    Para executar com êxito sp_article_validation (Transact-SQL), você deve ter permissões SELECT em todas as colunas na 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 de 1 a 5 para cada artigo que está sendo validado.

  7. (Opcional) Inicie o Distribution Agent se ele ainda não estiver em execução. Para obter mais informações, consulte Synchronize a Pull Subscription and Synchronize a Push Subscription.

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

Todas as assinaturas push de uma Publicação Transacional

Usando o Replication Monitor

  1. No Replication Monitor, expanda um grupo do Publisher no painel esquerdo e, em seguida, expanda um Publisher.
  2. Clique com o botão direito do mouse na publicação para a qual você deseja validar assinaturas e clique em Validar Assinaturas.
  3. Na caixa de diálogo Validar Assinaturas , selecione quais assinaturas validar:
    • Selecione Validar todas as assinaturas do SQL Server.
    • Selecione Validar as assinaturas a seguir e selecione uma ou mais assinaturas.
  4. Para especificar o tipo de validação a ser executado (contagem de linhas ou contagem de linhas e soma de verificação) clique em Opções de Validação e especifique as opções na caixa de diálogo Opções de Validação de Assinatura .
  5. Clique em OK.
  6. Clique na guia Todas as Assinaturas.
  7. Exibir resultados de validação. Para cada assinatura push:
    1. Se o agente não estiver em execução, clique com o botão direito do mouse na assinatura e clique em Iniciar Sincronização.
    2. Clique com o botão direito do mouse na assinatura e clique em Exibir Detalhes.
    3. Exiba informações na guia Histórico do Distribuidor para Assinante na área de texto Ações na sessão selecionada.

Para uma assinatura única de 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 expanda a pasta Publicações Locais .

  3. Expanda a publicação para a qual você deseja validar assinaturas, clique com o botão direito do mouse na assinatura e 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 linhas ou contagem de linhas e soma de verificação) clique em Opções e especifique as opções na caixa de diálogo Opções de Validação de Assinatura .

  6. Clique em OK.

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

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

    Se você não vir nenhuma mensagem sobre validação, o agente já registrou uma mensagem subsequente. Nesse caso, exiba os resultados da validação no Replication Monitor. Para obter mais informações, consulte o tópico sobre como usar o Replication Monitor neste tema.

Usando Transact-SQL (T-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 seguintes valores para @level:

    • 1 – Validação somente de contagem de linhas.
    • 3 – Validação do checksum binário de contagem 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 and Synchronize a Push Subscription.

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

  4. Repita as etapas de 1 a 3 para cada assinatura que está sendo validada.

Observação

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

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

Como usar o SQL Server Management Studio.

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

  2. Expanda a pasta Replicação e expanda a pasta Publicações Locais .

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

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

  5. Clique em OK.

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

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

    Se você não vir nenhuma mensagem sobre validação, o agente já registrou uma mensagem posterior. Nesse caso, exiba os resultados da validação no Replication Monitor. Para obter mais informações, consulte as instruções de procedimentos no Replication Monitor neste tópico.

Usando Transact-SQL (T-SQL)

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

    • 1 – Validação somente de contagem de linhas.
    • 3 – Validação da soma de verificação binária de contagem de linhas.

    Marca todas as assinaturas para validação.

  2. Inicie o agente de mesclagem para cada assinatura. Para obter mais informações, consulte Sincronizar uma Inscrição Pull e Sincronizar uma Inscrição Push.

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

Para uma única assinatura push para uma publicação de mesclagem

Usando o Replication Monitor

  1. No Replication Monitor, expanda um grupo publicador 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ê deseja validar e 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 linhas ou contagem de linhas e soma de verificação) clique em Opções e especifique as opções na caixa de diálogo Opções de Validação de Assinatura .
  6. Clique em OK.
  7. Clique na guia Todas as Assinaturas.
  8. Exibir os resultados da validação:
    1. Se o agente não estiver em execução, clique com o botão direito do mouse na assinatura e clique em Iniciar Sincronização.
    2. Clique com o botão direito do mouse na assinatura e clique em Exibir Detalhes.
    3. Visualize informações na guia Histórico de Sincronização na área de texto Última mensagem da sessão selecionada.

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

Usando o Replication Monitor:

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

Validar dados usando parâmetros do Merge Agent

  1. Inicie o Merge Agent no Assinante (assinatura pull) ou no Distribuidor (assinatura push) na linha de comando de uma das seguintes maneiras.

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

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

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

A replicação permite que você use os Objetos de Gerenciamento de Replicação (RMO) para validar programaticamente que 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 para uma publicação.

Observação

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

Para validar dados de 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 da publicação. Defina a ConnectionContext propriedade como a conexão criada na etapa 1.

  3. Chame o LoadProperties método para obter as propriedades restantes do objeto. Se esse método retornar false, as propriedades da 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 em execução, inicie o Distribution Agent para sincronizar cada assinatura. Para obter mais informações, consulte Synchronize a Push Subscription or Synchronize a Pull Subscription. O resultado da operação de validação é gravado no histórico do agente. Para obter mais informações, consulte Monitoramento de Replicação.

Para 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 ConnectionContext propriedade como a conexão criada na etapa 1.
  3. Chame o LoadProperties método para obter as propriedades restantes do objeto. Se esse método retornar false, as propriedades da publicação na etapa 2 foram definidas incorretamente ou a publicação não existe.
  4. Chame o método ValidatePublication . Passe o item desejado ValidationOption.
  5. Execute o Merge Agent para cada assinatura para que a validação comece, ou aguarde a próxima execução agendada do agente. Para obter mais informações, consulte Synchronize a Pull Subscription and Synchronize a Push Subscription. O resultado da operação de validação é gravado no histórico do agente, que você exibe usando o Replication Monitor. Para obter mais informações, consulte Monitoramento de Replicação.

Para validar dados na assinatura única 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 da publicação. Defina a ConnectionContext propriedade como a conexão criada na etapa 1.
  3. Chame o LoadProperties método para obter as propriedades restantes do objeto. Se esse método retornar false, as propriedades da 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 do banco de dados de assinatura que está sendo validado e o desejado ValidationOption.
  5. Execute o Merge Agent para iniciar a validação da assinatura, ou aguarde a próxima execução agendada do agente. Para obter mais informações, consulte Sincronizar uma assinatura Pull e Sincronizar uma assinatura Push. O resultado da operação de validação é gravado no histórico do agente, que você exibe usando o Replication Monitor. Para obter mais informações, consulte Monitoramento de Replicação.

Exemplo (RMO)

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

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

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 = "AdventureWorks2012"

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 marca uma assinatura específica para uma publicação de mesclagem para validação de contagem de linhas.

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

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 = "AdventureWorks2012"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"

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