Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.