Partager via


Utilitaire tablediff

L'utilitaire tablediff sert à comparer les données de deux tables dans le but de détecter une non-convergence ; il est particulièrement utile pour résoudre les problèmes de non-convergence dans une topologie de réplication. Cet utilitaire peut être employé à partir de l'invite de commandes ou dans un fichier de commandes pour effectuer les tâches suivantes :

  • Une comparaison ligne par ligne entre une table source dans une instance de MicrosoftSQL Server agissant comme serveur de publication de réplication et la table de destination dans une ou plusieurs instances de SQL Server agissant comme abonnés de réplication.

  • Comparaison rapide se limitant à la comparaison du nombre de lignes et du schéma.

  • Comparaisons au niveau des colonnes.

  • Génération d'un script Transact-SQL pour corriger les différences sur le serveur de destination afin de mettre en convergence les tables source et de destination.

  • Consignation des résultats dans un fichier de sortie ou dans une table de la base de données de destination.

Syntaxe

tablediff 
[ -? ] | 
{
        -sourceserver source_server_name[\instance_name]
        -sourcedatabase source_database
        -sourcetable source_table_name 
    [ -sourceschema source_schema_name ]
    [ -sourcepassword source_password ]
    [ -sourceuser source_login ]
    [ -sourcelocked ]
        -destinationserver destination_server_name[\instance_name]
        -destinationdatabase subscription_database 
        -destinationtable destination_table 
    [ -destinationschema destination_schema_name ]
    [ -destinationpassword destination_password ]
    [ -destinationuser destination_login ]
    [ -destinationlocked ]
    [ -b large_object_bytes ] 
    [ -bf number_of_statements ] 
    [ -c ] 
    [ -dt ] 
    [ -et table_name ] 
    [ -f [ file_name ] ] 
    [ -o output_file_name ] 
    [ -q ] 
    [ -rc number_of_retries ] 
    [ -ri retry_interval ] 
    [ -strict ]
    [ -t connection_timeouts ] 
}

Arguments

  • [ -? ]
    Retour de la liste des paramètres pris en charge.

  • -sourceserversource_server_name[**\instance_name]
    Nom du serveur source. Spécifiez source_server_name pour l'instance par défaut de SQL Server. Spécifiez source_server_name
    \**instance_name pour une instance nommée de SQL Server.

  • -sourcedatabasesource_database
    Nom de la base de données source.

  • -sourcetablesource_table_name
    Nom de la table source en cours de vérification.

  • -sourceschemasource_schema_name
    Propriétaire du schéma de la table source. Par défaut, le propriétaire de la table est supposé être dbo.

  • -sourcepasswordsource_password
    Mot de passe de l'ouverture de session utilisée pour la connexion au serveur source avec l'authentification SQL Server.

    Remarque relative à la sécuritéRemarque relative à la sécurité

    Si possible, fournissez les informations d'identification au moment de l'exécution. Si vous devez enregistrer les informations d'identification dans un fichier de script, vous devez sécuriser ce fichier pour empêcher un accès non autorisé.

  • -sourceusersource_login
    Mot de passe de l'ouverture de session utilisée pour la connexion au serveur source avec l'authentification SQL Server. Si source_login n'est pas fourni, l'authentification Windows est employée lors de la connexion au serveur source. Lorsque c'est possible, utilisez l'authentification Windows.

  • -sourcelocked
    Durant la comparaison, la table source est verrouillée à l'aide des indicateurs de table TABLOCK et HOLDLOCK.

  • -destinationserverdestination_server_name[**\instance_name]
    Nom du serveur de destination. Spécifiez destination_server_name pour l'instance par défaut de SQL Server. Spécifiez destination_server_name
    \**instance_name pour une instance nommée de SQL Server.

  • -destinationdatabasesubscription_database
    Nom de la base de données de destination.

  • -destinationtabledestination_table
    Nom de la table de destination.

  • -destinationschemadestination_schema_name
    Le propriétaire du schéma de la table de destination. Par défaut, le propriétaire de la table est supposé être dbo.

  • -destinationpassworddestination_password
    Mot de passe de la connexion utilisée pour établir une connexion au serveur de destination avec l'authentification SQL Server.

    Remarque relative à la sécuritéRemarque relative à la sécurité

    Lorsque cela est possible, fournissez les informations d'identification au moment de l'exécution. Si vous devez enregistrer les informations d'identification dans un fichier de script, vous devez sécuriser le fichier pour empêcher un accès non autorisé.

  • -destinationuserdestination_login
    Nom d'accès employé pour établir la connexion au serveur de destination avec l'authentification SQL Server. Si destination_login n'est pas fourni, l'authentification Windows est employée lors de la connexion au serveur. Lorsque c'est possible, utilisez l'authentification Windows.

  • -destinationlocked
    Durant la comparaison, la table de destination est verrouillée à l'aide des indicateurs de table TABLOCK et HOLDLOCK.

  • -blarge_object_bytes
    Nombre d'octets à comparer pour des colonnes de type de données objet volumineux, notamment : text, ntext, image, varchar(max), nvarchar(max) et varbinary(max). large_object_bytes ont comme valeur par défaut la taille de la colonne. Toutes les données au-dessus de large_object_bytes ne sont pas comparées.

  • -bf number_of_statements
    Nombre d'instructions Transact-SQL à écrire dans le fichier de script Transact-SQL actuel lorsque l'option -f est utilisée. Lorsque le nombre d'instructions Transact-SQL dépasse number_of_statements, un nouveau fichier de script Transact-SQL est créé.

  • -c
    Compare les différences au niveau des colonnes.

  • -dt
    Supprime la table de résultats spécifiée par table_name si la table existe déjà.

  • -ettable_name
    Spécifie le nom de la table de résultats à créer. Si cette table existe déjà, -DT doit être utilisé, sinon l'opération échoue.

  • -f [ file_name ]
    Génère un script Transact-SQL pour mettre la table sur le serveur de destination en convergence avec la table sur le serveur source. Vous pouvez éventuellement spécifier un nom et un chemin d'accès pour le fichier de script Transact-SQL généré. Si file_name n'est pas spécifié, le fichier de script Transact-SQL est créé dans le répertoire où l'utilitaire est exécuté.

  • -ooutput_file_name
    Nom complet et chemin d'accès du fichier de sortie.

  • -q
    Comparaison rapide se limitant à la comparaison du nombre de lignes et du schéma.

  • -rcnumber_of_retries
    Nombre de fois où l'utilitaire retente une opération qui a échoué.

  • -ri retry_interval
    Intervalle, en secondes, d'attente entre les tentatives.

  • -strict
    Les schémas source et de destination sont comparés de manière stricte.

  • -tconnection_timeouts
    Définit le délai d'attente de connexion, en secondes, pour les connexions au serveur source et au serveur de destination.

Valeur de retour

Valeur

Description

0

Réussite

1

Erreur critique

2

Tables différentes

Notes

L'utilitaire tablediff ne peut pas être utilisé avec des serveurs non-SQL Server.

Les tables comprenant des colonnes de types de données sql_variant ne sont pas prises en charge.

Par défaut, l'utilitaire tablediff prend en charge les mappages de types de données suivants entre les colonnes source et de destination.

Type de données sources

Type de données de destination

tinyint

smallint, int ou bigint

smallint

int - ou - bigint

int

bigint

timestamp

varbinary

varchar(max)

text

nvarchar(max)

ntext

varbinary(max)

image

text

varchar(max)

ntext

nvarchar(max)

image

varbinary(max)

Utilisez l'option -strict pour interdire ces mappages et effectuer une validation stricte.

La table source de la comparaison doit contenir au moins une colonne de clé primaire, d'identité ou ROWGUID. Lorsque vous utilisez l'option -strict, la table de destination doit également contenir une colonne de clé primaire, d'identité ou ROWGUID.

Le script Transact-SQL généré pour faire converger la table de destination n'inclut pas les types de données suivants :

  • varchar(max)

  • nvarchar(max)

  • varbinary(max)

  • timestamp

  • xml

  • text

  • ntext

  • image

Autorisations

Pour comparer les tables, vous avez besoin des autorisations SELECT ALL sur les objets de table comparés.

Pour utiliser l'option -et, vous devez être membre du rôle de base de données fixe db_owner, ou au moins disposer de l'autorisation CREATE TABLE dans la base de données d'abonnement et de l'autorisation ALTER sur le schéma du propriétaire de destination sur le serveur de destination.

Pour utiliser l'option -dt, vous devez être membre du rôle de base de données fixe db_owner ou disposer au moins de l'autorisation ALTER sur le schéma du propriétaire de destination sur le serveur de destination.

Pour utiliser l'option -o ou -f, vous devez posséder des autorisations d'écriture dans l'emplacement répertoire/fichier spécifié.