sp_table_validation (Transact-SQL)

Aplica-se a: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 é suportado para Editores 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 for NULL, o número de linhas atual será retornado 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 for NULL, a soma de verificação atual será 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 [ = ] 'dono'

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 é minúsculo, com um padrão de 2, e pode ser um desses valores.

Valor Descrição
0 Efetua contagem completa usando COUNT (*).
1 Faz contagem rápida de sysindexes.rows. Contar linhas em sysindexes é muito mais rápido do que contar 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 completo COUNT(*) será sempre usado.

@shutdown_agent [ = ] shutdown_agent

Se o Agente de Distribuição estiver em execução sp_table_validation, especifica se o Agente de Distribuição 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. Esse parâmetro é ignorado quando sp_table_validation é executado diretamente por um usuário.

[ @table_name = ] 'table_name'

O nome da tabela do modo de exibição usado 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 a execução de 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, retornará uma mensagem de que a tabela pode estar fora de sincronização e informará a diferença entre o número de linhas esperado e o atual.

Se executar 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, retornará uma mensagem de que a tabela pode estar fora de sincronização e informará a diferença entre o número de linhas esperado e o atual.

Comentários

sp_table_validation é usado em todos os tipos de replicação. sp_table_validation não é suportado 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. Ela não verifica colunas seletivamente e não pode operar em uma exibição ou em uma 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 efetuar 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, na mesma ordem, o mesmo tipo de dados e comprimentos e as mesmas condições NULL/NOT NULL. Por exemplo, se o Publicador tiver executado um CREATE TABLE, depois um ALTER TABLE para adicionar colunas, mas o script aplicado ao Assinante for uma simples tabela CREATE, a estrutura não será a mesma. Se você não tiver certeza de que a estrutura das duas tabelas é idêntica, examine 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 de modo de caractere tiver sido usado, o que é o caso se a publicação tiver assinantes que não sejam do 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.