Compartir a través de


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 replicación. 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 MicrosoftSQL Server que actúa como publicador de replicación y la tabla de destino de una o más instancias de SQL Server que actúan como Suscriptores de replicación.

  • Realizar una comparación rápida comparando sólo el número de filas y el esquema.

  • Realizar comparaciones de nivel de columna.

  • Generar un script 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 seguridadNota de seguridad

    Cuando sea posible, proporcione credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales en un archivo de script, 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. Siempre que sea posible, utilice la autenticación de Windows.

  • -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 seguridadNota de seguridad

    Cuando sea posible, proporcione credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales en un archivo de script, 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. Siempre que sea posible, utilice la autenticación de Windows.

  • -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 deben comparar en las columnas cuyo tipo de datos es de objetos grandes, lo que incluye los tipos: text, ntext, image, varchar(max), nvarchar(max) y varbinary(max). large_object_bytes toma como valor predeterminado el tamaño de la columna. Los datos que superen large_object_bytes no se compararán.

  • -bf number_of_statements
    Es el número de instrucciones Transact-SQL que se deben escribir en el archivo de script actual 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 script 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 un script 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 script Transact-SQL generado. Si no se especifica file_name, el archivo de script 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.

  • -ri retry_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.

El script Transact-SQL generado 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 de base de datos fija 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.

Para utilizar la opción -dt, debe ser miembro de la función de base de datos fija 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.