sys.sp_table_validation (Transact-SQL)

Aplica-se a: SQL Server

Ou devolve a contagem de linhas ou informação de soma de verificação numa tabela ou vista indexada, ou compara a contagem de linhas ou informação de soma de verificação fornecida com a tabela especificada ou a vista indexada. Este procedimento armazenado é executado no Publisher na base de dados de publicações e no Assinante na base de dados de subscrição.

Note

sp_table_validation não é suportado pela Oracle Publishers.

Transact-SQL convenções de sintaxe

Syntax

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

Arguments

[ @table = ] N'mesa'

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

[ @expected_rowcount = ] expected_rowcount SAÍDA

Especifica se deve devolver o número esperado de linhas na tabela. @expected_rowcount é int, com um padrão de NULL. Se NULL, a contagem real de linhas é devolvida como parâmetro de saída. Se for fornecido um valor, esse valor é comparado com a contagem real de linhas para identificar quaisquer diferenças.

[ @expected_checksum = ] expected_checksum SAÍDA

Especifica se deve devolver a soma de verificação esperada para a tabela. @expected_checksum é numérico, com um padrão de NULL. Se NULL, a soma de verificação real é devolvida como parâmetro de saída. Se for fornecido um valor, esse valor é comparado com a soma de verificação real para identificar quaisquer diferenças.

[ @rowcount_only = ] rowcount_only

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

Se 0, realiza uma contagem de linhas e um checksum compatível com SQL Server 7.0.

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

Se 2, realiza uma contagem de linhas e um checksum binário.

[ @owner = ] N'dono'

O nome do dono da mesa. @owner é sysname, com um padrão de NULL.

[ @full_or_fast = ] full_or_fast

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

Value Descrição
0 Faz a contagem completa usando COUNT(*).
1 Conta rápido a partir de sysindexes.rows. Contar linhas em sysindexes é muito mais rápido do que contar linhas na tabela propriamente dita. No entanto, por sysindexes ser atualizado de forma preguiçosa, a contagem de linhas pode não ser precisa.
2 (padrão) Faz contagem condicional de jejum tentando primeiro o método rápido. Se o método fast mostrar diferenças, reverte para o método completo. Se @expected_rowcount for NULL e o procedimento armazenado estiver a ser usado para obter o valor, é sempre usado um valor integral COUNT(*) .

[ @shutdown_agent = ] shutdown_agent

Se o Distribution Agent estiver a sp_table_validationexecutar , especifica se o Distribution Agent deve desligar-se 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 desliga. Se 1for ativado o erro 20578 e o agente de replicação for sinalizado para desligar. Este parâmetro é ignorado quando sp_table_validation é executado diretamente por um utilizador.

[ @table_name = ] N'table_name'

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

[ @column_list = ] N'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. Permite a validação de artigos de fusão para especificar uma lista de colunas que exclui colunas computadas e de carimbo temporal.

Valores de código de retorno

Se realizar 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 retorna uma mensagem a indicar que a tabela passou a validação da soma de verificação. Caso contrário, devolve uma mensagem a indicar que a tabela pode estar fora de sincronização e reporta a diferença entre o número esperado e o número real de linhas.

Se realizar uma validação de contagem de linhas e o número esperado de linhas for igual ao número na tabela, sp_table_validation retorna uma mensagem a indicar que a tabela passou a validação de contagem de linhas. Caso contrário, devolve uma mensagem a indicar que a tabela pode estar fora de sincronização e reporta a diferença entre o número esperado e o número real de linhas.

Remarks

sp_table_validation é usado em todos os tipos de replicação. sp_table_validation não é suportado pela Oracle Publishers.

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

Ao fazer um checksum, a estrutura da tabela deve ser idêntica entre os dois servidores; ou seja, as tabelas devem ter as mesmas colunas na mesma ordem, com os mesmos tipos de dados e comprimentos, e as mesmas NULL/NOT NULL condições. Por exemplo, se o Publisher fez um CREATE TABLE, then an ALTER TABLE para adicionar colunas, mas o script aplicado no Subscriber for uma tabela simplesCREATE, a estrutura não é a mesma. Se não tiveres a certeza de que a estrutura das duas tabelas é idêntica, vê sys.syscolumns e confirma que o deslocamento em cada tabela é o mesmo.

Os valores de ponto flutuante tendem a gerar diferenças de soma de verificação se for usado bcp em modo de carácter, o que acontece se a publicação tiver assinantes que não sejam do SQL Server. Isto deve-se a pequenas e inevitáveis diferenças de precisão ao fazer a conversão para e a partir do modo de personagem.

Permissions

Para executar sp_table_validation, deve ter permissões SELECT na tabela a validar.