Partilhar via


sp_table_validation (Transact-SQL)

Aplica-se: SQL Server

Retorna informações de número de linhas e soma de verificação em uma tabela ou exibição indexada, ou compara as informações de número de linhas e soma de verificação com a tabela ou exibição indexada. Esse procedimento armazenado é executado no Publicador no banco de dados de publicação e no Assinante, no banco de dados de assinatura.

Observação

sp_table_validation não tem suporte para Publicadores Oracle.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_table_validation [ @table = ] 'table'
    [ , [ @expected_rowcount = ] type_of_check_requested OUTPUT ]
    [ , [ @expected_checksum = ] expected_checksum OUTPUT ]
    [ , [ @rowcount_only = ] rowcount_only ]
    [ , [ @owner = ] 'owner' ]
    [ , [ @full_or_fast = ] full_or_fast ]
    [ , [ @shutdown_agent = ] shutdown_agent ]
    [ , [ @table_name = ] 'table_name' ]
    [ , [ @column_list = ] 'column_list' ]
[ ; ]

Argumentos

@table [ = ] 'tabela'

O nome da tabela. table é sysname, sem padrão.

@expected_rowcount [ = ] expected_rowcount SAÍDA

Especifica se o número de linhas esperado na tabela deve ser retornado. @expected_rowcount é int, com um padrão de NULL. Se NULL, a contagem de linhas real é retornada como um parâmetro de saída. Se um valor for fornecido, esse valor será verificado no número de linhas atual para identificar qualquer diferença.

@expected_checksum [ = ] expected_checksum SAÍDA

Especifica se a soma de verificação esperada da tabela deve ser retornada. @expected_checksum é numérico, com um padrão de NULL. Se NULL, a soma de verificação real é retornada como um parâmetro de saída. Se um valor for fornecido, esse valor será verificado na soma de verificação atual para identificar qualquer diferença.

@rowcount_only [ = ] type_of_check_requested

Especifica o tipo de soma de verificação ou contagem de linhas a ser executada. @rowcount_only é smallint, com um padrão de 1.

Se 0, execute uma contagem de linhas e uma soma de verificação compatível com o SQL Server 7.0.

Se 1, execute apenas uma verificação de contagem de linhas.

Se 2, execute uma contagem de linhas e uma soma de verificação binária.

@owner [ = ] 'proprietário'

O nome do proprietário da tabela. @owner é sysname, com um padrão de NULL.

@full_or_fast [ = ] full_or_fast

O método usado para calcular a contagem de linhas. @full_or_fast é tinyint, com um padrão de 2, e pode ser um desses valores.

Valor Descrição
0 Efetua contagem completa usando COUNT (*).
1 O jejum conta a partir de sysindexes.rows. A contagem de linhas é sysindexes muito mais rápida do que a contagem de linhas na tabela real. No entanto, como sysindexes é atualizado preguiçosamente, a contagem de linhas pode não ser precisa.
2 (padrão) Efetua contagem rápida condicional tentando primeiro o método rápido. Se o método rápido mostrar diferenças, reverterá ao método completo. Se expected_rowcount for NULL e o procedimento armazenado estiver sendo usado para obter o valor, um full COUNT(*) sempre será usado.

@shutdown_agent [ = ] shutdown_agent

Se o Distribution Agent estiver em execução sp_table_validation, especifica se o Distribution Agent deve ser desligado imediatamente após a conclusão da validação. @shutdown_agent é bit, com um padrão de 0. Se 0, o agente de replicação não for desligado. Se 1, o erro 20578 for gerado e o agente de replicação for sinalizado para desligar. Este parâmetro é ignorado quando sp_table_validation é executado diretamente por um usuário.

[ @table_name = ] 'table_name'

O nome da tabela da exibição usada para mensagens de saída. table_name é sysname, com um padrão de @table.

@column_list [ = ] 'column_list'

A lista de colunas que devem ser usadas na função de soma de verificação. column_list é nvarchar(4000), com um padrão de NULL. Habilita validação de artigos de mesclagem para especificar uma lista de colunas que exclui colunas computadas e colunas de carimbo de data e hora.

Valores do código de retorno

Se estiver executando uma validação de soma de verificação e a soma de verificação esperada for igual à soma de verificação na tabela, sp_table_validation retornará uma mensagem informando que a tabela passou na validação da soma de verificação. Caso contrário, ele retornará uma mensagem informando que a tabela pode estar fora de sincronização e relatará a diferença entre o número esperado e o número real de linhas.

Se estiver executando uma validação de contagem de linhas e o número esperado de linhas for igual ao número na tabela, sp_table_validation retornará uma mensagem informando que a tabela passou na validação de contagem de linhas. Caso contrário, ele retornará uma mensagem informando que a tabela pode estar fora de sincronização e relatará a diferença entre o número esperado e o número real de linhas.

Comentários

sp_table_validation é usado em todos os tipos de replicação. sp_table_validation não tem suporte para Publicadores Oracle.

A soma de verificação computa uma CRC (verificação e redundância cíclica) de 32 bits em toda a imagem de linha na página. Ele não verifica seletivamente as colunas e não pode operar em uma exibição ou partição vertical da tabela. Além disso, a soma de verificação ignora o conteúdo das colunas de texto e imagem (por design).

Ao fazer uma soma de verificação, a estrutura da tabela deve ser idêntica entre os dois servidores; ou seja, as tabelas devem ter as mesmas colunas existentes na mesma ordem, os mesmos tipos e comprimentos de dados e as mesmas NULL/NOT NULL condições. Por exemplo, se o Publicador fez um CREATE TABLE, depois um ALTER TABLE para adicionar colunas, mas o script aplicado no Assinante é uma tabela simples CREATE , a estrutura não é a mesma. Se você não tiver certeza de que a estrutura das duas tabelas é idêntica, examine sys.syscolumns e confirme se o deslocamento em cada tabela é o mesmo.

Os valores de ponto flutuante provavelmente gerarão diferenças de soma de verificação se o bcp no modo de caractere tiver sido usado, o que é o caso se a publicação tiver assinantes não SQL Server. Isso se deve a diferenças menores e inevitáveis na precisão ao efetuar conversão para e do modo de caractere.

Permissões

Para executar sp_table_validationo , você deve ter permissões SELECT na tabela que está sendo validada.