tablediff (utilidad)
La utilidad tablediff se utiliza 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 réplica. Esta utilidad se puede usar desde el símbolo del sistema o en un archivo por lotes para realizar las siguientes tareas:
- Una comparación fila a fila entre una tabla de origen de una instancia de Microsoft SQL Server que actúa como publicador de réplica y la tabla de destino de una o más instancias de SQL Server que actúan como Suscriptores de réplica.
- Realizar una comparación rápida comparando sólo el número de filas y el esquema.
- Realizar comparaciones de nivel de columna.
- Generar una secuencia de comandos Transact-SQL para solucionar discrepancias en el servidor de destino y hacer que las tablas de destino y de origen converjan.
- Registrar resultados en un archivo de salida o en una tabla de la base de datos de destino.
Sintaxis
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 ]
}
Argumentos
- [ -? ]
Devuelve la lista de parámetros admitidos.
- -sourceserversource_server_name[**\instance_name]
Es el nombre del servidor de origen. Especifique source_server_name para la instancia predeterminada de SQL Server. Especifique source_server_name\**instance_name para una instancia con nombre de SQL Server.
- -sourcedatabasesource_database
Es el nombre de la base de datos de origen.
- -sourcetablesource_table_name
Es el nombre de la tabla de origen que se está comprobando.
- -sourceschemasource_schema_name
Es el propietario del esquema de la tabla de origen. De forma predeterminada, se asume que el propietario de la tabla es dbo.
-sourcepasswordsource_password
Es la contraseña para el inicio de sesión que se utiliza para conectar con el servidor de origen utilizando la autenticación de SQL Server.Nota de seguridad: Cuando sea posible, proporcione credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales en un archivo de secuencia de comandos, debe proteger el archivo para impedir el acceso no autorizado.
- -sourceusersource_login
Es el inicio de sesión que se utiliza para conectar con el servidor de origen utilizando la autenticación de SQL Server. Si no se proporciona source_login, se utiliza la autenticación de Windows para conectar con el servidor de origen.
- -sourcelocked
La tabla de origen se bloquea durante la comparación con las sugerencias de tabla TABLOCK y HOLDLOCK.
- -destinationserverdestination_server_name[**\instance_name]
Es el nombre del servidor de destino. Especifique destination_server_name para la instancia predeterminada de SQL Server. Especifique destination_server_name\**instance_name para una instancia con nombre de SQL Server.
- -destinationdatabasesubscription_database
Es el nombre de la base de datos de destino.
- -destinationtabledestination_table
Es el nombre de la tabla de destino.
- -destinationschemadestination_schema_name
Es el propietario del esquema de la tabla de destino. De forma predeterminada, se asume que el propietario de la tabla es dbo.
-destinationpassworddestination_password
Es la contraseña para el inicio de sesión que se utiliza para conectar con el servidor de destino utilizando la autenticación de SQL Server.Nota de seguridad: Cuando sea posible, proporcione credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales en un archivo de secuencia de comandos, debe proteger el archivo para impedir el acceso no autorizado.
- -destinationuserdestination_login
Es el inicio de sesión que se utiliza para conectar con el servidor de destino utilizando la autenticación de SQL Server. Si no se proporciona destination_login, se utiliza la autenticación de Windows para conectar con el servidor.
- -destinationlocked
La tabla de destino se bloquea durante la comparación con las sugerencias de tabla TABLOCK y HOLDLOCK.
- -blarge_object_bytes
Es el número de bytes que se comparará para columnas de tipo de datos de objetos grandes, lo que incluye: text, ntext, image, varchar(max), nvarchar(max) y varbinary(max). El valor predeterminado de large_object_bytes es el valor máximo de 8000 bytes. Los datos que superen large_object_bytes no se compararán.
- -bfnumber_of_statements
Es el número de instrucciones Transact-SQL que se deben escribir en el archivo actual de secuencias de comandos Transact-SQL cuando se utiliza la opción -f. Cuando el número de instrucciones Transact-SQL supera el valor de number_of_statements, se crea un nuevo archivo de secuencias de comandos Transact-SQL.
- -c
Compara diferencias en el nivel de columna.
- -dt
Quita la tabla de resultados especificada por table_name si la tabla ya existe.
- -ettable_name
Especifica el nombre de la tabla de resultados que se desea crear. Si ya existe esta tabla, debe usarse -DT o la operación no se realizará correctamente.
- -f [ file_name ]
Genera una secuencia de comandos de Transact-SQL para hacer que la tabla del servidor de destino converja con la tabla del servidor de origen. Tiene la opción de especificar un nombre y una ruta de acceso para el archivo de secuencias de comandos Transact-SQL generado. Si no se especifica file_name, el archivo de secuencias de comandos Transact-SQL se genera en el directorio en que se ejecuta la utilidad.
- -ooutput_file_name
Es la ruta y el nombre completo del archivo de salida.
- -q
Realiza una comparación rápida comparando sólo el número de filas y el esquema.
- -rcnumber_of_retries
Número de reintentos de la utilidad para operaciones con errores.
- -riretry_interval
Intervalo (en segundos) entre los reintentos.
- -strict
El esquema de origen y de destino se comparan de forma estricta.
- -tconnection_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.
Valor devuelto
Valor | Descripción |
---|---|
0 |
Correcto |
1 |
Error grave |
2 |
Diferencias entre tablas |
Notas
La utilidad tablediff no se puede usar con servidores que no son SQL Server.
No se admiten tablas que contengan columnas con el tipo de datos sql_variant.
De forma predeterminada, la utilidad tablediff admite las siguientes asignaciones de tipos de datos entre las columnas de origen y de destino.
Tipo de datos de origen | Tipo de datos de destino |
---|---|
tinyint |
smallint, int o bigint |
smallint |
int o bigint |
int |
bigint |
timestamp |
varbinary |
varchar(max) |
text |
nvarchar(max) |
ntext |
varbinary(max) |
image |
text |
varchar(max) |
ntext |
nvarchar(max) |
image |
varbinary(max) |
Utilice la opción -strict para no permitir estas asignaciones y llevar a cabo una validación estricta.
La tabla de origen de la comparación debe contener como mínimo una columna de clave principal, de identidad o ROWGUID. Cuando se emplea la opción -strict, la tabla de destino también debe tener una columna de clave principal, de identidad o ROWGUID.
La secuencia de comandos Transact-SQL generada para hacer que la tabla de destino converja no incluye los siguientes tipos de datos:
- varchar(max)
- nvarchar(max)
- varbinary(max)
- timestamp
- xml
- text
- ntext
- image
Permisos
Para comparar tablas, necesita los permisos SELECT ALL en los objetos de la tabla que se están comparando.
Para utilizar la opción -et, debe ser miembro de la función fija de base de datos db_owner o, como mínimo, tener el permiso CREATE TABLE en la base de datos de la suscripción y el permiso ALTER en el esquema del propietario de destino del servidor de destino.
Para utilizar la opción -dt, debe ser miembro de la función fija 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.
Para utilizar las opciones -o o -f, debe tener permisos de escritura en la ubicación del directorio de archivos especificada.
Vea también
Otros recursos
How to: Compare Replicated Tables for Differences (Replication Programming)