Partilhar via


sp_table_validation (Transact-SQL)

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. Sem suporte para Editores Oracle.

Ícone de vínculo de tópicoConvenções de sintaxe da 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=] 'table'
    É o nome da tabela. table é sysname, sem padrão.

  • [ @expected_rowcount=] expected_rowcountOUTPUT
    Especifica se o número previsto de linhas 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_checksumOUTPUT
    Especifica se a soma de verificação prevista para a tabela deve ser retornada. expected_checksum é numeric, 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 número de linhas a ser executado. type_of_check_requested é smallint, com um padrão 1.

    Se for 0, execute um número de linhas e uma soma de verificação compatível com o Microsoft SQL Server 7.0.

    Se for 1, execute somente uma verificação de número de linhas.

    Se for 2, execute um número de linhas e uma soma de verificação binária.

  • [ @owner=] 'owner'
    IÉ 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 o número de linhas. full_or_fast é tinyint, com um padrão de 2, e pode ser um dos valores a seguir.

    Valor

    Descrição

    0

    Efetua contagem completa usando COUNT (*).

    1

    Efetua contagem rápida de sysindexes.rows. A contagem de linhas em sysindexes é muito mais rápida do que contar linhas na tabela atual. No entanto, como sysindexes é atualizado com lentidão, o número de linhas pode não ser preciso.

    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 COUNT(*) completo sempre será usado.

  • [ @shutdown_agent=] shutdown_agent
    Se o Distribution Agent estiver executando sp_table_validation, especifica se o Distribution Agent deve ser desligado imediatamente na conclusão da validação. shutdown_agent é bit, com um padrão de 0. Se for 0, o agente de replicação não desligará. Se for 1, um erro 20578 será gerado e o agente de replicação será sinalizado para desligar. Esse parâmetro é ignorado quando sp_table_validation é executado diretamente por um usuário.

  • [ @table_name =] table_name
    É o nome de tabela da 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 deve ser usada em uma 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 de código de retorno

Na execução de uma validação de soma de verificação, se a soma de verificação prevista for igual à soma de verificação da tabela, sp_table_validation retornará uma mensagem de 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.

Na execução de uma validação de número de linhas, se o número de linhas previsto for igual ao número na tabela, sp_table_validation retornará uma mensagem de que a tabela passou na validação de número 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 tem suporte para Editores 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 text e image (por padrão).

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, consulte syscolumns e verifique se o deslocamento em cada tabela é o mesmo.

É provável que valores de ponto flutuante gerem diferenças na soma de verificação se o modo de caractere bcp tiver sido usado, o que será 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_validation, você deve ter permissões SELECT na tabela que está sendo validada.