sp_table_validation (Transact-SQL)

Se aplica a:SQL Server

Devuelve el recuento de filas o la suma de comprobación de una tabla o vista indizada, o bien compara el recuento de filas o la suma de comprobación proporcionados con los de la tabla o vista indizada especificada. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicaciones y en el suscriptor de la base de datos de suscripciones.

Nota:

sp_table_validation no se admite para publicadores de Oracle.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_table_validation [ @table = ] 'table'
    [ , [ @expected_rowcount = ] type_of_check_requested OUTPUT ]
    [ , [ @expected_checksum = ] expected_checksum OUTPUT ]
    [ , [ @rowcount_only = ] rowcount_only ]
    [ , [ @owner = ] 'owner' ]
    [ , [ @full_or_fast = ] full_or_fast ]
    [ , [ @shutdown_agent = ] shutdown_agent ]
    [ , [ @table_name = ] 'table_name' ]
    [ , [ @column_list = ] 'column_list' ]
[ ; ]

Argumentos

[ @table = ] 'table'

Nombre de la tabla. table es sysname, sin valor predeterminado.

[ @expected_rowcount = ] expected_rowcount OUTPUT

Especifica si se devuelve el número de filas esperado en la tabla. @expected_rowcount es int, con un valor predeterminado de NULL. Si es NULL, el recuento de filas real se devuelve como parámetro de salida. Si se proporciona un valor, dicho valor se compara con el recuento de filas real para identificar posibles diferencias.

[ @expected_checksum = ] expected_checksum OUTPUT

Especifica si se devuelve la suma de comprobación esperada para la tabla. @expected_checksum es numérico, con un valor predeterminado de NULL. Si es NULL, la suma de comprobación real se devuelve como parámetro de salida. Si se proporciona un valor, dicho valor se compara con la suma de comprobación real para identificar posibles diferencias.

[ @rowcount_only = ] type_of_check_requested

Especifica qué tipo de suma de comprobación o recuento de filas se va a realizar. @rowcount_only es smallint, con un valor predeterminado de 1.

Si 0es , realice un recuento de filas y una suma de comprobación compatible con SQL Server 7.0.

Si 1es , realice solo una comprobación de recuento de filas.

Si 2es , realice un recuento de filas y una suma de comprobación binaria.

[ @owner = ] 'owner'

Nombre del propietario de la tabla. @owner es sysname, con un valor predeterminado de NULL.

[ @full_or_fast = ] full_or_fast

Método utilizado para calcular el recuento de filas. @full_or_fast es tinyint, con un valor predeterminado de 2y puede ser uno de estos valores.

Value Descripción
0 Realiza un recuento completo mediante COUNT(*).
1 Hace un recuento rápido de sysindexes.rows. El recuento de filas en sysindexes es mucho más rápido que contar filas en la tabla real. Sin embargo, dado que sysindexes se actualiza de forma difería, es posible que el recuento de filas no sea preciso.
2 (valor predeterminado) Realiza un recuento rápido condicional intentando primero el método rápido. Si el método rápido muestra diferencias, se utiliza el método completo. Si expected_rowcount es NULL y el procedimiento almacenado se usa para obtener el valor, siempre se usa un completo COUNT(*) .

[ @shutdown_agent = ] shutdown_agent

Si el Agente de distribución está ejecutando sp_table_validation, especifica si el Agente de distribución debe apagarse inmediatamente después de completar la validación. @shutdown_agent es bit, con un valor predeterminado de 0. Si 0es , el agente de replicación no se cierra. Si 1es , se genera el error 20578 y se señala al agente de replicación para apagarse. Este parámetro se omite cuando sp_table_validation un usuario ejecuta directamente este parámetro.

[ @table_name = ] 'table_name'

Nombre de tabla de la vista utilizada para los mensajes de salida. table_name es sysname, con un valor predeterminado de @table.

[ @column_list = ] 'column_list'

Lista de columnas que se deben usar en la función de suma de comprobación. column_list es nvarchar(4000), con un valor predeterminado de NULL. Habilita la validación de artículos de mezcla para especificar una lista de columnas que excluya las columnas calculadas y de marca de tiempo.

Valores de código de retorno

Si realiza una validación de suma de comprobación y la suma de comprobación esperada es igual a la suma de comprobación de la tabla, sp_table_validation devuelve un mensaje que indica que la tabla pasó la validación de suma de comprobación. De lo contrario, devuelve un mensaje que indica que la tabla puede no estar sincronizada e informa de la diferencia entre el número de filas real y el esperado.

Si realiza una validación de recuento de filas y el número esperado de filas es igual al número de la tabla, sp_table_validation devuelve un mensaje que indica que la tabla pasó la validación de recuento de filas. De lo contrario, devuelve un mensaje que indica que la tabla puede no estar sincronizada e informa de la diferencia entre el número de filas real y el esperado.

Comentarios

sp_table_validation se usa en todos los tipos de replicación. sp_table_validation no se admite para publicadores de Oracle.

La suma de comprobación calcula una prueba de redundancia cíclica (CRC, Cyclic Redundancy Check) de 32 bits sobre la imagen completa de la fila en la página. No comprueba las columnas de forma selectiva y no puede operar sobre vistas ni particiones verticales de la tabla. Además, la suma de comprobación omite el contenido de las columnas de texto e imagen (por diseño).

Al realizar una suma de comprobación, la estructura de la tabla debe ser idéntica en los dos servidores; es decir, las tablas deben tener las mismas columnas y en el mismo orden, el mismo tipo de datos y la misma longitud, y las mismas condiciones NULL o NOT NULL. Por ejemplo, si el publicador ejecutó CREATE TABLE y, a continuación, ALTER TABLE para agregar columnas, pero el script aplicado en el suscriptor es simplemente CREATE TABLE, la estructura NO será la misma. Si no está seguro de que la estructura de las dos tablas es idéntica, examine syscolumns y confirme que el desplazamiento de cada tabla es el mismo.

Es probable que los valores de punto flotante generen diferencias de suma de comprobación si se usó bcp en modo de caracteres, que es el caso si la publicación tiene suscriptores que no son de SQL Server. Dichas diferencias se deben a pequeñas e inevitables diferencias de precisión en la conversión desde y hacia el modo de carácter.

Permisos

Para ejecutar sp_table_validation, debe tener permisos SELECT en la tabla que se va a validar.

Consulte también