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.
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 MicrosoftSQL 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.