sp_table_validation (Transact-SQL)

S’applique à :SQL Server

Retourne des informations sur le nombre de lignes ou sur la somme de contrôle d'une table ou d'une vue indexée, ou bien compare ces informations avec la table ou la vue indexée spécifiée. Cette procédure stockée est exécutée sur la base de données de publication du serveur de publication et sur la base de données d'abonnement de l'Abonné.

Remarque

sp_table_validation n’est pas pris en charge pour les serveurs de publication Oracle.

Conventions de la syntaxe Transact-SQL

Syntaxe

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' ]
[ ; ]

Arguments

[ @table = ] 'table'

Nom de la table. la table est sysname, sans valeur par défaut.

[ @expected_rowcount = ] sortie expected_rowcount

Spécifie s'il faut retourner le nombre de lignes attendu pour la table. @expected_rowcount est int, avec la valeur par défaut NULL. Si la valeur est NULL, le nombre de lignes réel est retourné en tant que paramètre de sortie. Si une valeur est fournie, celle-ci est confrontée au nombre réel de lignes en vue d'une identification des éventuelles différences.

[ @expected_checksum = ] sortie de expected_case activée um

Spécifie s'il faut retourner la somme de contrôle attendue pour la table. @expected_case activée sum est numérique, avec la valeur par défaut NULL. Si la valeur est NULL, la somme de contrôle réelle est retournée en tant que paramètre de sortie. Si une valeur est fournie, celle-ci est confrontée à la somme de contrôle réelle en vue d'une identification des éventuelles différences.

[ @rowcount_only = ] type_of_case activée_requested

Spécifie le type de la somme de contrôle ou du nombre de lignes à effectuer. @rowcount_only est smallint, avec une valeur par défaut de 1.

Si 0, effectuez un nombre de lignes et une case activée sum compatible AVEC SQL Server 7.0.

Si 1, effectuez un nombre de lignes case activée uniquement.

Si 2, effectuez un nombre de lignes et un case activée sum binaire.

[ @owner = ] 'owner'

Nom du propriétaire de la table. @owner est sysname, avec la valeur par défaut NULL.

[ @full_or_fast = ] full_or_fast

Méthode utilisée pour calculer le nombre de lignes. @full_or_fast est tinyint, avec une valeur par défaut 2, et peut être l’une de ces valeurs.

Valeur Description
0 Effectue un comptage total à l'aide de COUNT(*).
1 Fait le nombre rapide de sysindexes.rows. Le comptage de lignes est sysindexes beaucoup plus rapide que le comptage de lignes dans la table réelle. Toutefois, étant donné qu’il sysindexes est mis à jour de manière différée, le nombre de lignes peut ne pas être exact.
2 (par défaut) Exécute un décompte rapide conditionnel en essayant d'abord la méthode rapide. Si la méthode rapide affiche des différences, revient à la méthode totale. Si expected_rowcount a la valeur NULL et que la procédure stockée est utilisée pour obtenir la valeur, une valeur complète COUNT(*) est toujours utilisée.

[ @shutdown_agent = ] shutdown_agent

Si l’Agent de distribution est en cours d’exécutionsp_table_validation, spécifie si l’Agent de distribution doit s’arrêter immédiatement à la fin de la validation. @shutdown_agent est bit, avec la valeur par défaut 0. Si 0, l’agent de réplication ne s’arrête pas. Si 1, l’erreur 20578 est déclenchée et l’agent de réplication est signalé pour s’arrêter. Ce paramètre est ignoré lorsqu’il sp_table_validation est exécuté directement par un utilisateur.

[ @table_name = ] 'nom_table'

Nom de la table de la vue utilisée pour les messages de sortie. table_name est sysname, avec une valeur par défaut de @table.

[ @column_list = ] 'column_list'

Liste des colonnes qui doivent être utilisées dans la fonction case activée sum. column_list est nvarchar(4000), avec la valeur par défaut NULL. Active la validation d'articles de fusion pour spécifier une liste de colonnes excluant les colonnes calculées et les colonnes timestamp.

Valeurs des codes de retour

Si vous effectuez une validation de case activée sum et que la case activée sum attendue est égale à la somme d’case activée dans la table, sp_table_validation retourne un message indiquant que la table a passé case activée validation de somme. Sinon, elle retourne un message indiquant que la table peut ne plus être synchronisée et indique la différence entre le nombre de lignes attendu et le nombre réel.

Si vous effectuez une validation de nombre de lignes et que le nombre attendu de lignes est égal au nombre dans la table, sp_table_validation retourne un message indiquant que la table a passé la validation du nombre de lignes. Sinon, elle retourne un message indiquant que la table peut ne plus être synchronisée et indique la différence entre le nombre de lignes attendu et le nombre réel.

Notes

sp_table_validation est utilisé dans tous les types de réplication. sp_table_validation n’est pas pris en charge pour les serveurs de publication Oracle.

La somme de contrôle calcule une vérification de redondance cyclique de 32 bits (CRC) sur l'image de la ligne entière de la page. La somme de contrôle ne vérifie pas les colonnes de manière sélective et ne peut pas s'exécuter sur une vue ou une partition verticale de la table. En outre, la case activée sum ignore le contenu des colonnes de texte et d’image (par conception).

Lors d'une somme de contrôle, la structure de la table doit être identique sur les deux serveurs ; les tables doivent posséder les mêmes colonnes, dans le même ordre, les mêmes types et longueurs de données et les mêmes conditions NULL/NOT NULL. Par exemple, si le serveur de publication a exécuté une instruction CREATE TABLE, puis une instruction ALTER TABLE pour ajouter des colonnes, mais que le script appliqué au niveau de l'Abonné est une simple CREATE TABLE, la structure n'est PAS la même. Si vous n’êtes pas certain que la structure des deux tables est identique, examinez syscolumns et vérifiez que le décalage dans chaque table est le même.

Les valeurs à virgule flottante sont susceptibles de générer des différences de case activée sum si le mode caractère bcp a été utilisé, ce qui est le cas si la publication a des abonnés non-SQL Server. Cela est dû à des erreurs mineures et inévitables de précision lors de la conversion vers le mode caractère et à partir de ce mode.

Autorisations

Pour exécuter sp_table_validation, vous devez disposer d’autorisations SELECT sur la table en cours de validation.