tablediff, utilidadtablediff Utility

En este tema se aplica a: SíSQL ServerSíbase de datos de SQL AzureSíalmacenamiento de datos de SQL Azure Sí Almacenamiento de datos paralelosTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

La utilidad tablediff se usa para comparar los datos de dos tablas para determinar la no convergencia y es especialmente útil para solucionar problemas de no convergencia en una topología de replicación.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. Esta utilidad se puede usar desde el símbolo del sistema o en un archivo por lotes para realizar las siguientes tareas:This utility can be used from the command prompt or in a batch file to perform the following tasks:

  • Una comparación fila a fila entre una tabla de origen de una instancia de MicrosoftMicrosoft SQL ServerSQL Server que actúa como publicador de replicación y la tabla de destino de una o más instancias de SQL ServerSQL Server que actúan como suscriptores de replicación.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.

  • Realiza una comparación rápida comparando solo el número de filas y el esquema.Perform a fast comparison by only comparing row counts and schema.

  • Realizar comparaciones de nivel de columna.Perform column-level comparisons.

  • Generar un script Transact-SQLTransact-SQL para solucionar discrepancias en el servidor de destino y hacer que las tablas de destino y de origen converjan.Generate a Transact-SQLTransact-SQL script to fix discrepancies at the destination server to bring the source and destination tables into convergence.

  • Registrar resultados en un archivo de salida o en una tabla de la base de datos de destino.Log results to an output file or into a table in the destination database.

SintaxisSyntax


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

ArgumentosArguments

[ -?[ -? ]]
Devuelve la lista de parámetros admitidos.Returns the list of supported parameters.

-sourceserver source_server_name[\instance_name]-sourceserver source_server_name[\instance_name]
Es el nombre del servidor de origen.Is the name of the source server. Especifique source_server_name para la instancia predeterminada de SQL ServerSQL Server.Specify source_server_name for the default instance of SQL ServerSQL Server. Especifique source_server_name\* instance_name* para una instancia con nombre de SQL ServerSQL Server.Specify source_server_name\* instance_name* for a named instance of SQL ServerSQL Server.

-sourcedatabase source_database-sourcedatabase source_database
Es el nombre de la base de datos de origen.Is the name of the source database.

-sourcetable source_table_name-sourcetable source_table_name
Es el nombre de la tabla de origen que se está comprobando.Is the name of the source table being checked.

-sourceschema source_schema_name-sourceschema source_schema_name
Es el propietario del esquema de la tabla de origen.The schema owner of the source table. De forma predeterminada, se asume que el propietario de la tabla es dbo.By default, the table owner is assumed to be dbo.

-sourcepassword source_password-sourcepassword source_password
Es la contraseña para el inicio de sesión que se usa para conectar con el servidor de origen mediante autenticación de SQL ServerSQL Server .Is the password for the login used to connect to the source server using SQL ServerSQL Server Authentication.

Importante

Cuando sea posible, proporcione credenciales de seguridad en tiempo de ejecución.When possible, supply security credentials at runtime. Si debe almacenar credenciales en un archivo de script, debe proteger el archivo para impedir el acceso no autorizado.If you must store credentials in a script file, you should secure the file to prevent unauthorized access.

-sourceuser source_login-sourceuser source_login
Es el inicio de sesión que se usa para conectar con el servidor de origen mediante autenticación de SQL ServerSQL Server .Is the login used to connect to the source server using SQL ServerSQL Server Authentication. Si no se proporciona source_login , se usa autenticación de Windows para conectar con el servidor de origen.If source_login is not supplied, then Windows Authentication is used when connecting to the source server. Siempre que sea posible, utilice la autenticación de Windows.When possible, use Windows Authentication.

-sourcelocked-sourcelocked
La tabla de origen se bloquea durante la comparación con las sugerencias de tabla TABLOCK y 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]
Es el nombre del servidor de destino.Is the name of the destination server. Especifique destination_server_name para la instancia predeterminada de SQL ServerSQL Server.Specify destination_server_name for the default instance of SQL ServerSQL Server. Especifique destination_server_name\* instance_name* para una instancia con nombre de SQL ServerSQL Server.Specify destination_server_name\* instance_name* for a named instance of SQL ServerSQL Server.

-destinationdatabase subscription_database-destinationdatabase subscription_database
Es el nombre de la base de datos de destino.Is the name of the destination database.

-destinationtable destination_table-destinationtable destination_table
Es el nombre de la tabla de destino.Is the name of the destination table.

-destinationschema destination_schema_name-destinationschema destination_schema_name
Es el propietario del esquema de la tabla de destino.The schema owner of the destination table. De forma predeterminada, se asume que el propietario de la tabla es dbo.By default, the table owner is assumed to be dbo.

-destinationpassword destination_password-destinationpassword destination_password
Es la contraseña para el inicio de sesión que se usa para conectar con el servidor de destino mediante autenticación de SQL ServerSQL Server .Is the password for the login used to connect to the destination server using SQL ServerSQL Server Authentication.

Importante

Cuando sea posible, proporcione credenciales de seguridad en tiempo de ejecución.When possible, supply security credentials at runtime. Si debe almacenar credenciales en un archivo de script, debe proteger el archivo para impedir el acceso no autorizado.If you must store credentials in a script file, you should secure the file to prevent unauthorized access.

-destinationuser destination_login-destinationuser destination_login
Es el inicio de sesión que se usa para conectar con el servidor de destino mediante autenticación de SQL ServerSQL Server .Is the login used to connect to the destination server using SQL ServerSQL Server Authentication. Si no se proporciona destination_login , se usa autenticación de Windows para conectar con el servidor.If destination_login is not supplied, then Windows Authentication is used when connecting to the server. Siempre que sea posible, utilice la autenticación de Windows.When possible, use Windows Authentication.

-destinationlocked-destinationlocked
La tabla de destino se bloquea durante la comparación con las sugerencias de tabla TABLOCK y HOLDLOCK.The destination table is locked during the comparison using the TABLOCK and HOLDLOCK table hints.

-b large_object_bytes-b large_object_bytes
Es el número de bytes que se va a comparar en las columnas de tipo de datos de objetos grandes, lo que incluye: text, ntext, image, varchar(max), nvarchar(max) y 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 toma como valor predeterminado el tamaño de la columna.large_object_bytes defaults to the size of the column. Los datos que superen large_object_bytes no se compararán.Any data above large_object_bytes will not be compared.

-bf number_of_statements-bf number_of_statements
Es el número de instrucciones Transact-SQLTransact-SQL que se va a escribir en el archivo de script actual Transact-SQLTransact-SQL cuando se usa la opción -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. Cuando el número de instrucciones Transact-SQLTransact-SQL supera el valor de number_of_statements, se crea un nuevo archivo de 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
Compara diferencias de nivel de columna.Compare column-level differences.

-dt-dt
Quita la tabla de resultados especificada por table_namesi la tabla ya existe.Drop the result table specified by table_name, if the table already exists.

-et table_name-et table_name
Especifica el nombre de la tabla de resultados que se desea crear.Specifies the name of the result table to create. Si ya existe esta tabla, debe usarse -DT o la operación no se realizará correctamente.If this table already exists, -DT must be used or the operation will fail.

-f [ file_name ]-f [ file_name ]
Genera un script de Transact-SQLTransact-SQL para hacer que la tabla del servidor de destino converja con la tabla del servidor de origen.Generates a Transact-SQLTransact-SQL script to bring the table at the destination server into convergence with the table at the source server. Tiene la opción de especificar un nombre y una ruta de acceso para el archivo de script Transact-SQLTransact-SQL generado.You can optionally specify a name and path for the generated Transact-SQLTransact-SQL script file. Si no se especifica file_name , el archivo de script Transact-SQLTransact-SQL se genera en el directorio en el que se ejecuta la utilidad.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
Es la ruta y el nombre completo del archivo de salida.Is the full name and path of the output file.

-q-q
Realiza una comparación rápida comparando solo el número de filas y el esquema.Perform a fast comparison by only comparing row counts and schema.

-rc number_of_retries-rc number_of_retries
Número de reintentos de la utilidad para operaciones con errores.Number of times that the utility retries a failed operation.

-ri retry_interval-ri retry_interval
Intervalo (en segundos) entre los reintentos.Interval, in seconds, to wait between retries.

-strict-strict
El esquema de origen y de destino se comparan de forma estricta.Source and destination schema are strictly compared.

-t connection_timeouts-t connection_timeouts
Establece el período de tiempo de espera de la conexión, en segundos, para las conexiones con el servidor de origen y el servidor de destino.Sets the connection timeout period, in seconds, for connections to the source server and destination server.

Valor devueltoReturn Value

ValorValue DescriptionDescription
00 CorrectoSuccess
11 Error graveCritical error
22 Diferencias entre tablasTable differences

NotasRemarks

La utilidad tablediff no se puede usar con servidores que no son SQL ServerSQL Server .The tablediff utility cannot be used with non- SQL ServerSQL Server servers.

No se admiten tablas que contengan columnas con el tipo de datos sql_variant .Tables with sql_variant data type columns are not supported.

De forma predeterminada, la utilidad tablediff admite las siguientes asignaciones de tipos de datos entre las columnas de origen y de destino.By default, the tablediff utility supports the following data type mappings between source and destination columns.

Tipo de datos de origenSource data type Tipo de datos de destinoDestination data type
tinyinttinyint smallint, into bigintsmallint, int, or bigint
smallintsmallint int o bigintint or bigint
intint bigintbigint
timestamptimestamp varbinaryvarbinary
ntextvarchar(max) texttext
nvarchar(max)nvarchar(max) ntextntext
varbinary(max)varbinary(max) imagenimage
textotext ntextvarchar(max)
ntextntext nvarchar(max)nvarchar(max)
imagenimage varbinary(max)varbinary(max)

Use la opción -strict para no permitir estas asignaciones y llevar a cabo una validación estricta.Use the -strict option to disallow these mappings and perform a strict validation.

La tabla de origen de la comparación debe contener como mínimo una columna de clave principal, de identidad o ROWGUID.The source table in the comparison must contain at least one primary key, identity, or ROWGUID column. Cuando se emplea la opción -strict , la tabla de destino también debe tener una columna de clave principal, de identidad o ROWGUID.When you use the -strict option, the destination table must also have a primary key, identity, or ROWGUID column.

El script Transact-SQLTransact-SQL generado para hacer que la tabla de destino converja no incluye los siguientes tipos de datos:The Transact-SQLTransact-SQL script generated to bring the destination table into convergence does not include the following data types:

  • ntextvarchar(max)

  • nvarchar(max)nvarchar(max)

  • varbinary(max)varbinary(max)

  • timestamptimestamp

  • xmlxml

  • textotext

  • ntextntext

  • imagenimage

PermisosPermissions

Para comparar tablas, necesita los permisos SELECT ALL en los objetos de la tabla que se están comparando.To compare tables, you need SELECT ALL permissions on the table objects being compared.

Para usar la opción -et , debe ser miembro del rol fijo de base de datos db_owner o, como mínimo, tener el permiso CREATE TABLE en la base de datos de suscripciones y el permiso ALTER en el esquema del propietario de destino del servidor de destino.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.

Para usar la opción -dt , debe ser miembro del rol fijo de base de datos db_owner o, como mínimo, tener el permiso ALTER en el esquema del propietario de destino del servidor de destino.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.

Para usar las opciones -o o -f , debe tener permisos de escritura en la ubicación del directorio de archivos especificada.To use the -o or -f options, you must have write permissions to the specified file directory location.

Ver tambiénSee Also

Comparar tablas replicadas para buscar diferencias (programación de la replicación)Compare Replicated Tables for Differences (Replication Programming)