utilità tabledifftablediff Utility

L'utilità tablediff viene usata per confrontare i dati in due tabelle per rilevarne l'eventuale non convergenza e risulta particolarmente utile per la risoluzione dei problemi relativi alla non convergenza in una topologia di replica.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. Questa utilità può essere utilizzata dal prompt dei comandi oppure in un file batch per eseguire le attività seguenti:This utility can be used from the command prompt or in a batch file to perform the following tasks:

  • Confronto riga per riga tra una tabella di origine in un'istanza di MicrosoftMicrosoft SQL ServerSQL Server che funge da server di pubblicazione per la replica e una tabella di destinazione in una o più istanze di SQL ServerSQL Server che fungono da Sottoscrittori della replica.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.

  • Esegue un confronto rapido mediante il confronto solo dei conteggi delle righe e degli schemi.Perform a fast comparison by only comparing row counts and schema.

  • Confronti a livello di colonna.Perform column-level comparisons.

  • Generazione di uno script Transact-SQLTransact-SQL per correggere le discrepanze nel server di destinazione e rendere convergenti le tabelle di origine e di destinazione.Generate a Transact-SQLTransact-SQL script to fix discrepancies at the destination server to bring the source and destination tables into convergence.

  • Registrazione dei risultati in un file di output oppure in una tabella nel database di destinazione.Log results to an output file or into a table in the destination database.

SintassiSyntax


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

ArgomentiArguments

[ -?[ -? ]]
Restituisce l'elenco dei parametri supportati.Returns the list of supported parameters.

-sourceserver source_server_name[\instance_name]-sourceserver source_server_name[\instance_name]
Nome del server di origine.Is the name of the source server. Specificare source_server_name per l'istanza predefinita di SQL ServerSQL Server.Specify source_server_name for the default instance of SQL ServerSQL Server. Specificare source_server_name\instance_name per un'istanza denominata di SQL ServerSQL Server.Specify source_server_name\instance_name for a named instance of SQL ServerSQL Server.

-sourcedatabase source_database-sourcedatabase source_database
Nome del database di origine.Is the name of the source database.

-sourcetable source_table_name-sourcetable source_table_name
Nome della tabella di origine sottoposta al controllo.Is the name of the source table being checked.

-sourceschema source_schema_name-sourceschema source_schema_name
Proprietario dello schema della tabella di origine.The schema owner of the source table. Per impostazione predefinita, dbo viene considerato il proprietario della tabella.By default, the table owner is assumed to be dbo.

-sourcepassword source_password-sourcepassword source_password
Password di accesso usata per connettersi al server di origine mediante l'autenticazione di SQL ServerSQL Server .Is the password for the login used to connect to the source server using SQL ServerSQL Server Authentication.

Importante

Se possibile, specificare le credenziali di sicurezza in fase di esecuzione.When possible, supply security credentials at runtime. Se è necessario archiviare le credenziali in un file script, è consigliabile proteggere il file per evitare accessi non autorizzati.If you must store credentials in a script file, you should secure the file to prevent unauthorized access.

-sourceuser source_login-sourceuser source_login
Account di accesso usato per connettersi al server di origine mediante l'autenticazione di SQL ServerSQL Server .Is the login used to connect to the source server using SQL ServerSQL Server Authentication. Se non si specifica il parametro source_login , durante la connessione al server di origine viene usata l'autenticazione di Windows.If source_login is not supplied, then Windows Authentication is used when connecting to the source server. Se possibile, usare l'autenticazione di Windows.When possible, use Windows Authentication.

-sourcelocked-sourcelocked
La tabella di origine viene bloccata durante il confronto mediante gli hint di tabella TABLOCK e 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]
Nome del server di destinazione.Is the name of the destination server. Specificare destination_server_name per l'istanza predefinita di SQL ServerSQL Server.Specify destination_server_name for the default instance of SQL ServerSQL Server. Specificare destination_server_name\instance_name per un'istanza denominata di SQL ServerSQL Server.Specify destination_server_name\instance_name for a named instance of SQL ServerSQL Server.

-destinationdatabase subscription_database-destinationdatabase subscription_database
Nome del database di destinazione.Is the name of the destination database.

-destinationtable destination_table-destinationtable destination_table
Nome della tabella di destinazione.Is the name of the destination table.

-destinationschema destination_schema_name-destinationschema destination_schema_name
Proprietario dello schema della tabella di destinazione.The schema owner of the destination table. Per impostazione predefinita, dbo viene considerato il proprietario della tabella.By default, the table owner is assumed to be dbo.

-destinationpassword destination_password-destinationpassword destination_password
Password di accesso usata per connettersi al server di destinazione mediante l'autenticazione di SQL ServerSQL Server .Is the password for the login used to connect to the destination server using SQL ServerSQL Server Authentication.

Importante

Se possibile, specificare le credenziali di sicurezza in fase di esecuzione.When possible, supply security credentials at runtime. Se è necessario archiviare le credenziali in un file script, è consigliabile proteggere il file per evitare accessi non autorizzati.If you must store credentials in a script file, you should secure the file to prevent unauthorized access.

-destinationuser destination_login-destinationuser destination_login
Account di accesso usato per connettersi al server di destinazione mediante l'autenticazione di SQL ServerSQL Server .Is the login used to connect to the destination server using SQL ServerSQL Server Authentication. Se non si specifica il parametro destination_login , durante la connessione al server viene usata l'autenticazione di Windows.If destination_login is not supplied, then Windows Authentication is used when connecting to the server. Se possibile, usare l'autenticazione di Windows.When possible, use Windows Authentication.

-destinationlocked-destinationlocked
La tabella di destinazione viene bloccata durante il confronto mediante gli hint di tabella TABLOCK e HOLDLOCK.The destination table is locked during the comparison using the TABLOCK and HOLDLOCK table hints.

-b large_object_bytes-b large_object_bytes
Numero di byte da confrontare per le colonne dei tipi di dati di grandi dimensioni, ovvero: text, ntext, image, varchar(max), nvarchar(max) e 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). L'impostazione predefinita dilarge_object_bytes corrisponde alle dimensioni della colonna.large_object_bytes defaults to the size of the column. I dati che superano il valore di large_object_bytes non verranno confrontati.Any data above large_object_bytes will not be compared.

-bf number_of_statements-bf number_of_statements
Numero di istruzioni Transact-SQLTransact-SQL da scrivere nel file script Transact-SQLTransact-SQL corrente quando si usa l'opzione -f .Is the number of Transact-SQLTransact-SQL statements to write to the current Transact-SQLTransact-SQL script file when the -f option is used. Se il numero di istruzioni Transact-SQLTransact-SQL supera il valore di number_of_statements, viene creato un nuovo file script Transact-SQLTransact-SQL .When the number of Transact-SQLTransact-SQL statements exceeds number_of_statements, a new Transact-SQLTransact-SQL script file is created.

-c-c
Esegue il confronto per individuare eventuali differenze a livello di colonna.Compare column-level differences.

-dt-dt
Elimina la tabella dei risultati specificata da table_namese la tabella esiste già.Drop the result table specified by table_name, if the table already exists.

-et table_name-et table_name
Specifica il nome della tabella dei risultati da creare.Specifies the name of the result table to create. Se questa tabella esiste già, è necessario usare l'opzione -DT . In caso contrario, l'operazione ha esito negativo.If this table already exists, -DT must be used or the operation will fail.

-f [ file_name ]-f [ file_name ]
Genera uno script Transact-SQLTransact-SQL per ripristinare la convergenza tra la tabella nel server di destinazione e quella nel server di origine.Generates a Transact-SQLTransact-SQL script to bring the table at the destination server into convergence with the table at the source server. È possibile specificare facoltativamente un nome e un percorso per il file script Transact-SQLTransact-SQL generato.You can optionally specify a name and path for the generated Transact-SQLTransact-SQL script file. Se file_name viene omesso, il file script Transact-SQLTransact-SQL verrà generato nella directory in cui si esegue l'utilità.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
Nome e percorso completi del file di output.Is the full name and path of the output file.

-q-q
Esegue un confronto rapido mediante il confronto solo dei conteggi delle righe e degli schemi.Perform a fast comparison by only comparing row counts and schema.

-rc number_of_retries-rc number_of_retries
Numero di tentativi di esecuzione di un'operazione non riuscita compiuti dall'utilità.Number of times that the utility retries a failed operation.

-ri retry_interval-ri retry_interval
Intervallo espresso in secondi tra i vari tentativi.Interval, in seconds, to wait between retries.

-strict-strict
Gli schemi di origine e di destinazione vengono confrontati rigorosamente.Source and destination schema are strictly compared.

-t connection_timeouts-t connection_timeouts
Imposta il periodo di timeout della connessione, espresso in secondi, per le connessioni al server di origine e al server di destinazione.Sets the connection timeout period, in seconds, for connections to the source server and destination server.

Valore restituitoReturn Value

ValoreValue DescrizioneDescription
00 Operazione completataSuccess
11 Errore criticoCritical error
22 Differenze tra tabelleTable differences

OsservazioniRemarks

L'utilità tablediff non può essere usata con server non SQL ServerSQL Server .The tablediff utility cannot be used with non- SQL ServerSQL Server servers.

Le tabelle contenenti colonne con il tipo di dati sql_variant non sono supportate.Tables with sql_variant data type columns are not supported.

Per impostazione predefinita, l'utilità tablediff supporta i mapping dei tipi di dati tra colonne di origine e di destinazione elencati di seguito.By default, the tablediff utility supports the following data type mappings between source and destination columns.

Tipo di dati di origineSource data type Tipo di dati di destinazioneDestination data type
tinyinttinyint smallint, into bigintsmallint, int, or bigint
smallintsmallint int o bigintint or bigint
intint bigintbigint
timestamptimestamp varbinaryvarbinary
varchar(max)varchar(max) texttext
nvarchar(max)nvarchar(max) ntextntext
varbinary(max)varbinary(max) imageimage
texttext varchar(max)varchar(max)
ntextntext nvarchar(max)nvarchar(max)
imageimage varbinary(max)varbinary(max)

Usare l'opzione -strict per disabilitare questi mapping ed eseguire una convalida di tipo strict.Use the -strict option to disallow these mappings and perform a strict validation.

La tabella di origine utilizzata per il confronto deve contenere almeno una chiave primaria, un'identità o una colonna ROWGUID.The source table in the comparison must contain at least one primary key, identity, or ROWGUID column. Se si usa l'opzione -strict , anche la tabella di destinazione deve contenere una chiave primaria, un'identità o una colonna ROWGUID.When you use the -strict option, the destination table must also have a primary key, identity, or ROWGUID column.

Lo script Transact-SQLTransact-SQL generato per rendere convergente la tabella di destinazione non include i tipi di dati seguenti: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

  • texttext

  • ntextntext

  • imageimage

AutorizzazioniPermissions

Per confrontare tabelle, è necessario disporre delle autorizzazioni SELECT ALL sugli oggetti tabella da confrontare.To compare tables, you need SELECT ALL permissions on the table objects being compared.

Per usare l'opzione -et , è necessario essere membro del ruolo predefinito del database db_owner oppure disporre almeno dell'autorizzazione CREATE TABLE nel database di sottoscrizione e dell'autorizzazione ALTER per lo schema del proprietario della destinazione nel server di destinazione.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.

Per usare l'opzione -dt , è necessario essere membro del ruolo predefinito del database db_owner oppure disporre almeno dell'autorizzazione ALTER per lo schema del proprietario della destinazione nel server di destinazione.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.

Per usare l'opzione -o oppure -f , è necessario avere autorizzazioni di scrittura per il percorso della directory di file specificato.To use the -o or -f options, you must have write permissions to the specified file directory location.

Vedere ancheSee Also

Confronto di tabelle replicate al fine di individuare le differenze (programmazione della replica)Compare Replicated Tables for Differences (Replication Programming)