tablediff (utilitaire)tablediff Utility

Cette rubrique s’applique à : OuiSQL ServerOuibase de données SQL AzureOuiAzure SQL Data Warehouse Oui Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

L’utilitaire tablediff sert à comparer les données dans deux tables et à identifier une non-convergence. Il est particulièrement utile pour résoudre des problèmes de non-convergence dans une topologie de réplication.The tablediff utility is used to compare the data in two tables for non-convergence, and is particularly useful for troubleshooting non-convergence in a replication topology. Cet utilitaire peut être employé à partir de l'invite de commandes ou dans un fichier de commandes pour effectuer les tâches suivantes :This utility can be used from the command prompt or in a batch file to perform the following tasks:

  • Une comparaison ligne par ligne entre une table source dans une instance de MicrosoftMicrosoft SQL ServerSQL Server agissant comme serveur de publication de réplication et la table de destination dans une ou plusieurs instances de SQL ServerSQL Server agissant comme abonnés de réplication.A row by row comparison between a source table in an instance of MicrosoftMicrosoft SQL ServerSQL Server acting as a replication Publisher and the destination table at one or more instances of SQL ServerSQL Server acting as replication Subscribers.

  • Comparaison rapide se limitant à la comparaison du nombre de lignes et du schéma.Perform a fast comparison by only comparing row counts and schema.

  • Comparaisons au niveau des colonnes.Perform column-level comparisons.

  • Génération d'un script Transact-SQLTransact-SQL pour corriger les différences sur le serveur de destination afin de mettre en convergence les tables source et de destination.Generate a Transact-SQLTransact-SQL script to fix discrepancies at the destination server to bring the source and destination tables into convergence.

  • Consignation des résultats dans un fichier de sortie ou dans une table de la base de données de destination.Log results to an output file or into a table in the destination database.

SyntaxeSyntax


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 ]   
}  

ArgumentsArguments

[ -?[ -? ]]
Retour de la liste des paramètres pris en charge.Returns the list of supported parameters.

-sourceserver source_server_name[\instance_name]-sourceserver source_server_name[\instance_name]
Nom du serveur source.Is the name of the source server. Spécifiez source_server_name pour l’instance par défaut de SQL ServerSQL Server.Specify source_server_name for the default instance of SQL ServerSQL Server. Spécifiez source_server_name\instance_name pour une instance nommée de SQL ServerSQL Server.Specify source_server_name\instance_name for a named instance of SQL ServerSQL Server.

-sourcedatabase source_database-sourcedatabase source_database
Nom de la base de données source.Is the name of the source database.

-sourcetable source_table_name-sourcetable source_table_name
Nom de la table source en cours de vérification.Is the name of the source table being checked.

-sourceschema source_schema_name-sourceschema source_schema_name
Propriétaire du schéma de la table source.The schema owner of the source table. Par défaut, le propriétaire de la table est supposé être dbo.By default, the table owner is assumed to be dbo.

-sourcepassword source_password-sourcepassword source_password
Mot de passe de la connexion utilisée pour la connexion au serveur source avec l’authentification SQL ServerSQL Server .Is the password for the login used to connect to the source server using SQL ServerSQL Server Authentication.

Important

Lorsque cela est possible, fournissez les informations d'identification au moment de l'exécution.When possible, supply security credentials at runtime. 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é.If you must store credentials in a script file, you should secure the file to prevent unauthorized access.

-sourceuser source_login-sourceuser source_login
Connexion employée pour établir la connexion au serveur source avec l’authentification SQL ServerSQL Server .Is the login used to connect to the source server using SQL ServerSQL Server Authentication. Si source_login n’est pas fourni, l’authentification Windows est employée lors de la connexion au serveur source.If source_login is not supplied, then Windows Authentication is used when connecting to the source server. Lorsque c'est possible, utilisez l'authentification Windows.When possible, use Windows Authentication.

-sourcelocked-sourcelocked
Durant la comparaison, la table source est verrouillée à l'aide des indicateurs de table TABLOCK et HOLDLOCK.The source table is locked during the comparison using the TABLOCK and HOLDLOCK table hints.

-destinationserver destination_server_name[\instance_name]-destinationserver destination_server_name[\instance_name]
Nom du serveur de destination.Is the name of the destination server. Spécifiez destination_server_name pour l’instance par défaut de SQL ServerSQL Server.Specify destination_server_name for the default instance of SQL ServerSQL Server. Spécifiez destination_server_name\instance_name pour une instance nommée de SQL ServerSQL Server.Specify destination_server_name\instance_name for a named instance of SQL ServerSQL Server.

-destinationdatabase subscription_database-destinationdatabase subscription_database
Nom de la base de données de destination.Is the name of the destination database.

-destinationtable destination_table-destinationtable destination_table
Nom de la table de destination.Is the name of the destination table.

-destinationschema destination_schema_name-destinationschema destination_schema_name
Le propriétaire du schéma de la table de destination.The schema owner of the destination table. Par défaut, le propriétaire de la table est supposé être dbo.By default, the table owner is assumed to be dbo.

-destinationpassword destination_password-destinationpassword destination_password
Mot de passe de la connexion utilisée pour établir une connexion au serveur de destination avec l’authentification SQL ServerSQL Server .Is the password for the login used to connect to the destination server using SQL ServerSQL Server Authentication.

Important

Lorsque cela est possible, fournissez les informations d'identification au moment de l'exécution.When possible, supply security credentials at runtime. 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é.If you must store credentials in a script file, you should secure the file to prevent unauthorized access.

-destinationuser destination_login-destinationuser destination_login
Connexion employée pour établir la connexion au serveur de destination avec l’authentification SQL ServerSQL Server .Is the login used to connect to the destination server using SQL ServerSQL Server Authentication. Si destination_login n’est pas fourni, l’authentification Windows est employée lors de la connexion au serveur.If destination_login is not supplied, then Windows Authentication is used when connecting to the server. Lorsque c'est possible, utilisez l'authentification Windows.When possible, use Windows Authentication.

-destinationlocked-destinationlocked
Durant la comparaison, la table de destination est verrouillée à l'aide des indicateurs de table TABLOCK et HOLDLOCK.The destination table is locked during the comparison using the TABLOCK and HOLDLOCK table hints.

-b large_object_bytes-b large_object_bytes
Nombre d’octets à comparer pour des colonnes de types de données d’objet volumineuses, notamment text, ntext, image, varchar(max), nvarchar(max) et varbinary(max).Is the number of bytes to compare for large object data type columns, which includes: text, ntext, image, varchar(max), nvarchar(max) and varbinary(max). large_object_bytes a comme valeur par défaut la taille de la colonne.large_object_bytes defaults to the size of the column. Toutes les données au-dessus de large_object_bytes ne sont pas comparées.Any data above large_object_bytes will not be compared.

-bf number_of_statements-bf number_of_statements
Nombre d’instructions Transact-SQLTransact-SQL à écrire dans le fichier de script Transact-SQLTransact-SQL actuel lorsque l’option -f est utilisée.Is the number of Transact-SQLTransact-SQL statements to write to the current Transact-SQLTransact-SQL script file when the -f option is used. Quand le nombre d’instructions Transact-SQLTransact-SQL dépasse number_of_statements, un fichier de script Transact-SQLTransact-SQL est créé.When the number of Transact-SQLTransact-SQL statements exceeds number_of_statements, a new Transact-SQLTransact-SQL script file is created.

-c-c
Compare les différences au niveau des colonnes.Compare column-level differences.

-dt-dt
Supprime la table de résultats spécifiée par table_namesi la table existe déjà.Drop the result table specified by table_name, if the table already exists.

-et table_name-et table_name
Spécifie le nom de la table de résultats à créer.Specifies the name of the result table to create. Si cette table existe déjà, -DT doit être utilisé, sinon l’opération échoue.If this table already exists, -DT must be used or the operation will fail.

-f [ file_name ]-f [ file_name ]
Génère un script Transact-SQLTransact-SQL pour mettre la table sur le serveur de destination en convergence avec la table sur le serveur source.Generates a Transact-SQLTransact-SQL script to bring the table at the destination server into convergence with the table at the source server. Vous pouvez éventuellement spécifier un nom et un chemin d'accès pour le fichier de script Transact-SQLTransact-SQL généré.You can optionally specify a name and path for the generated Transact-SQLTransact-SQL script file. Si file_name n’est pas spécifié, le fichier de script Transact-SQLTransact-SQL est créé dans le répertoire où l’utilitaire est exécuté.If file_name is not specified, the Transact-SQLTransact-SQL script file is generated in the directory where the utility runs.

-o output_file_name-o output_file_name
Nom complet et chemin d'accès du fichier de sortie.Is the full name and path of the output file.

-q-q
Comparaison rapide se limitant à la comparaison du nombre de lignes et du schéma.Perform a fast comparison by only comparing row counts and schema.

-rc number_of_retries-rc number_of_retries
Nombre de fois où l'utilitaire retente une opération qui a échoué.Number of times that the utility retries a failed operation.

-ri retry_interval-ri retry_interval
Intervalle, en secondes, d'attente entre les tentatives.Interval, in seconds, to wait between retries.

-strict-strict
Les schémas source et de destination sont comparés de manière stricte.Source and destination schema are strictly compared.

-t connection_timeouts-t connection_timeouts
Définit le délai d'attente de connexion, en secondes, pour les connexions au serveur source et au serveur de destination.Sets the connection timeout period, in seconds, for connections to the source server and destination server.

Valeur retournéeReturn Value

ValeurValue DescriptionDescription
00 RéussiSuccess
11 Erreur critiqueCritical error
22 Tables différentesTable differences

Notes Remarks

L’utilitaire tablediff ne peut pas être utilisé avec des serveurs non- SQL ServerSQL Server .The tablediff utility cannot be used with non- SQL ServerSQL Server servers.

Les tables comprenant des colonnes de types de données sql_variant ne sont pas prises en charge.Tables with sql_variant data type columns are not supported.

Par défaut, l’utilitaire tablediff prend en charge les mappages de types de données suivants entre les colonnes source et de destination.By default, the tablediff utility supports the following data type mappings between source and destination columns.

Type de données sourcesSource data type Type de données de destinationDestination data type
tinyinttinyint smallint, intou bigintsmallint, int, or bigint
smallintsmallint int ou bigintint or bigint
Intint bigintbigint
timestamptimestamp varbinaryvarbinary
varchar(max)varchar(max) texttext
nvarchar(max)nvarchar(max) ntextntext
varbinary(max)varbinary(max) imageimage
textetext varchar(max)varchar(max)
ntextntext nvarchar(max)nvarchar(max)
imageimage varbinary(max)varbinary(max)

Utilisez l’option -strict pour interdire ces mappages et effectuer une validation stricte.Use the -strict option to disallow these mappings and perform a strict validation.

La table source de la comparaison doit contenir au moins une colonne de clé primaire, d'identité ou ROWGUID.The source table in the comparison must contain at least one primary key, identity, or ROWGUID column. Quand vous utilisez l’option -strict , la table de destination doit également contenir une colonne de clé primaire, d’identité ou ROWGUID.When you use the -strict option, the destination table must also have a primary key, identity, or ROWGUID column.

Le script Transact-SQLTransact-SQL généré pour faire converger la table de destination n'inclut pas les types de données suivants :The Transact-SQLTransact-SQL script generated to bring the destination table into convergence does not include the following data types:

  • varchar(max)varchar(max)

  • nvarchar(max)nvarchar(max)

  • varbinary(max)varbinary(max)

  • timestamptimestamp

  • xmlxml

  • textetext

  • ntextntext

  • imageimage

AutorisationsPermissions

Pour comparer les tables, vous avez besoin des autorisations SELECT ALL sur les objets de table comparés.To compare tables, you need SELECT ALL permissions on the table objects being compared.

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.To use the -et option, you must be a member of the db_owner fixed database role, or at least have CREATE TABLE permission in the subscription database and ALTER permission on the destination owner schema at the destination server.

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.To use the -dt option, you must be a member of the db_owner fixed database role, or at least have ALTER permission on the destination owner schema at the destination server.

Pour utiliser l’option -o ou -f , vous devez disposer d’autorisations d’écriture sur l’emplacement du répertoire de fichiers spécifié.To use the -o or -f options, you must have write permissions to the specified file directory location.

Voir aussiSee Also

Comparer des tables répliquées pour identifier les différences (programmation de réplication)Compare Replicated Tables for Differences (Replication Programming)