Partilhar via


Validar 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, Transact-SQL ou RMO (Replication Management Objects).

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

  • Apenas contagem de linhas. Isso valida se a tabela no Assinante tem o mesmo número de linhas que a tabela no Editor, mas não valida se o conteúdo das linhas corresponde. A validação da contagem de linhas fornece uma abordagem leve à validação que o pode alertar sobre problemas com os seus dados.
  • Contagem de linhas e soma de verificação binária. Além de fazer uma contagem de linhas no Editor 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 esses dados na correspondência Assinante e Editor, a replicação de mesclagem fornece a capacidade de validar que os dados estão particionados corretamente para cada Assinante. Para obter mais informações, consulte Validar informações de partição para um assinante de mesclagem.

Observação

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

Como funciona a validação de dados

O SQL Server valida os dados calculando uma contagem de linhas ou um checksum no Publicador e, em seguida, comparando esses valores com a contagem de linhas ou checksum calculado no Subscritor. Um valor é calculado para toda a tabela de publicação e um valor é calculado para toda a tabela de assinatura, mas os dados nas colunas text, ntext ou image 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 removidos, geralmente em questão de segundos.

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

A validação de dados é um processo em 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 Microsoft SQL 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 Replication Monitor. Para obter informações sobre como iniciar o Replication Monitor, consulte Iniciar o Replication Monitor.

  2. Uma assinatura é validada na próxima vez que for sincronizada pelo Distribution Agent (para replicação transacional) ou pelo Merge Agent (para replicação de mesclagem). O Distribution Agent 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 depois que você executa o agente.

  3. Veja os resultados da validação:

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

Considerações e restrições

Leve em consideração as seguintes questões ao validar dados:

  • Você deve interromper toda a atividade de atualização em Assinantes antes de validar dados (não é necessário interromper a atividade no Editor 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, deve agendar-se a validação para ocorrer quando houver a menor atividade possível nos servidores usados na replicação.
  • A replicação valida apenas tabelas; ela não verifica se objetos apenas 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. Checksum não pode validar tabelas com filtros de coluna ou estruturas lógicas de tabelas onde os offsets de coluna são diferentes (devido a instruções ALTER TABLE que eliminam ou adicionam colunas).
  • A validação da replicação usa as funções de soma de verificação e soma de verificação binária. 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 pode relatar incorretamente uma falha se os tipos de dados no Assinante forem diferentes dos do Editor. Isso pode ocorrer se você seguir um destes 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 de 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.
  • A soma de verificação binária e as validações de soma de verificação não têm suporte para assinaturas transformáveis na replicação transacional.
  • A validação não é suportada para dados replicados para assinantes que não utilizam o SQL Server.
  • Os procedimentos do Replication Monitor são apenas para assinaturas push porque as assinaturas pull não podem ser sincronizadas no Replication Monitor. No entanto, você pode marcar uma assinatura para validação e exibir os resultados da validação de 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 ocorrer 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).

Resultados da validação de dados

Quando a validação estiver concluída, o Distribution Agent ou o Merge Agent registrará mensagens referentes a sucesso 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:

Artigos em Replicação Transacional

Usando 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 Replication e depois expanda a pasta Local Publications.
  3. Clique com o botão direito do rato na publicação para a qual pretende validar subscrições e, em seguida, clique em Validar Subscrições.
  4. Na caixa de diálogo Validar Subscrições , selecione as subscrições a validar:
    • Selecione Validar todas as assinaturas do SQL Server.
    • Selecione Validar as seguintes subscrições e, em seguida, selecione uma ou mais subscrições.
  5. Para especificar o tipo de validação a ser executada (contagem de linhas ou contagem de linhas e soma de verificação), clique em Opções de Validação e especifique 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 na caixa de diálogo Exibir Status da Sincronização . Para cada assinatura:
    1. Expanda a publicação, clique com o botão direito do rato na subscrição e, em seguida, clique em Ver Estado de Sincronização.
    2. Se o agente não estiver em execução, clique em Iniciar na caixa de diálogo Exibir Status da Sincronização . A caixa de diálogo exibirá mensagens informativas sobre a validação.
      Se não vires nenhuma mensagem relativa à validação, o agente já anotou 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

Todos os artigos

  1. No Editor no banco de dados de publicação, 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ê efetua sp_publication_validation (Transact-SQL), sp_article_validation (Transact-SQL) é efetuado 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 ela ainda não estiver em execução. Para obter mais informações, consulte Sincronizar uma assinatura pull e Sincronizar uma assinatura push.

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

Artigo único

  1. No Publisher, na base 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 da tabela base publicada.

  2. (Opcional) Inicie o Distribution Agent para cada assinatura, se ela ainda não estiver em execução. Para obter mais informações, consulte Sincronizar uma assinatura pull e Sincronizar uma assinatura push.

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

Assinante único

  1. No Publisher na base de dados de publicação, abra uma transação explícita usando BEGIN TRANSACTION (Transact-SQL).

  2. No Publisher 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 Publisher, na base 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 da tabela base publicada.

  5. No Publisher no 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 está sendo validado.

  7. (Opcional) Inicie o Distribution Agent se ele ainda não estiver em execução. Para obter mais informações, consulte Sincronizar uma assinatura pull e Sincronizar uma assinatura push.

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

Todas as subscrições push para 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 rato na publicação para a qual pretende validar subscrições e, em seguida, clique em Validar Subscrições.

  3. Na caixa de diálogo Validar Subscrições , selecione as subscrições a validar:

    • Selecione Validar todas as assinaturas do SQL Server.
    • Selecione Validar as seguintes subscrições e, em seguida, selecione uma ou mais subscrições.
  4. Para especificar o tipo de validação a ser executada (contagem de linhas ou contagem de linhas e soma de verificação), clique em Opções de Validação e especifique 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. Veja os resultados da validação. Para cada subscrição 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 rato na subscrição e, em seguida, clique em Ver Detalhes.
    3. Veja informações no separador Histórico do Distribuidor para Subscritor na área de texto Ações na sessão selecionada.

Para uma única assinatura de uma publicação conjunta

Usando 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 Replication e depois expanda a pasta Local Publications.

  3. Expanda a publicação para a qual pretende validar subscrições, clique com o botão direito do rato na subscrição e, em seguida, clique em Validar Subscrição.

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

  5. Para especificar o tipo de validação a ser executada (contagem de linhas ou contagem de linhas e soma de verificação), clique em Opções e especifique 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 na caixa de diálogo Exibir Status da Sincronização :

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

    Se não vires nenhuma mensagem relativa à validação, o agente já anotou 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.

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

Usando 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 Replication e depois expanda a pasta Local Publications.

  3. Clique com o botão direito do rato na publicação para a qual pretende validar subscrições e, em seguida, clique em Validar Todas as Subscrições.

  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. Selecione OK.

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

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

    Se não vires nenhuma mensagem relativa à validação, o agente já anotou 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.

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

Usando o Replication Monitor

  1. No Replication Monitor, expanda um grupo do Publisher no painel esquerdo, expanda um Publisher e clique em uma publicação.
  2. Clique na guia Todas as assinaturas .
  3. Clique com o botão direito do rato na subscrição que pretende validar e, em seguida, clique em Validar Subscrição.
  4. Na caixa de diálogo Validar Assinatura , selecione Validar esta assinatura.
  5. Para especificar o tipo de validação a ser executada (contagem de linhas ou contagem de linhas e soma de verificação), clique em Opções e especifique 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. Ver 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 rato na subscrição e, em seguida, clique em Ver Detalhes.
    3. Exiba informações na guia Histórico de sincronização na área de texto Última mensagem da sessão selecionada.

Usando Transact-SQL

  1. No Publisher na base 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 de apenas contagem de linhas.
    • 3 - Verificação de soma binária do 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 Sincronizar uma assinatura pull e Sincronizar uma assinatura push.

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

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

Observação

Uma assinatura de uma publicação mesclada também pode ser validada no final de uma sincronização, especificando o parâmetro -Validate ao utilizar o Replication Merge Agent.

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

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 rato na publicação para a qual pretende validar subscrições e, em seguida, clique em Validar Todas as Subscrições.
  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. Selecione OK.
  5. Clique na guia Todas as assinaturas .
  6. Veja os resultados da validação. Para cada subscrição 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 rato na subscrição e, em seguida, clique em Ver Detalhes.
    3. Exiba informações na guia Histórico de sincronização na área de texto Última mensagem da sessão selecionada.

Usando Transact-SQL

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

    • 1 - Validação de apenas contagem de linhas.
    • 3 - Verificação de soma binária do número de linhas.

    Marca todas as subscrições para validação.

  2. Inicie o agente de mesclagem para cada assinatura. Para obter mais informações, consulte Sincronizar uma assinatura pull e Sincronizar uma assinatura push.

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

Validar dados usando parâmetros do Merge Agent

  1. Inicie o Merge Agent no Subscritor (pull subscription) ou no Distribuidor (push subscription) a partir da linha de comandos por uma das seguintes formas.

    • Especificando um valor de 1 (rowcount) ou 3 (rowcount 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 validação de soma de verificação para o parâmetro -ProfileName.

    Para obter mais informações, consulte Sincronizar uma assinatura pull ou Sincronizar uma assinatura push.

Usando RMO (Replication Management Objects, objetos de gerenciamento de replicação)

A replicação permite que o utilizador utilize os Objetos de Gestão de Replicação (RMO) para validar de forma programática que os dados no Subscritor 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), mais adiante nesta seção.

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

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

  2. Crie uma instância da TransPublication classe. Defina as propriedades Name e DatabaseName para a publicação. Defina a ConnectionContext propriedade para 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 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:

    Isto assinala 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 Sincronizar uma assinatura push ou Sincronizar uma assinatura pull. O resultado da operação de validação é gravado no histórico do agente. Para obter mais informações, consulte Monitorização da Replicação.

Para validar dados em todas as subscrições de uma publicação de mesclagem

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

  2. Crie uma instância da MergePublication classe. Defina as propriedades Name e DatabaseName para a publicação. Defina a ConnectionContext propriedade para 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 de publicação na etapa 2 foram definidas incorretamente ou a publicação não existe.

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

  5. Execute o Merge Agent para cada assinatura para iniciar a validação 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ê visualiza usando o Replication Monitor. Para obter mais informações, consulte Monitorização da Replicação.

Para validar dados numa única assinatura de uma publicação de fusão

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

  2. Crie uma instância da MergePublication classe. Defina as propriedades Name e DatabaseName para a publicação. Defina a ConnectionContext propriedade para 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 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 do banco de dados de assinatura que está a ser validado, juntamente com 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ê visualiza usando o Replication Monitor. Para obter mais informações, consulte Monitorização da Replicação.

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 marca uma assinatura específica de 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 = "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

Ver também

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