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 NULL
es , el recuento de filas real se devuelve como un 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 NULL
es , la suma de comprobación real se devuelve como un 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 0
es , realice un recuento de filas y una suma de comprobación compatible con SQL Server 7.0.
Si 1
es , realice solo una comprobación de recuento de filas.
Si 2
es , 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 2
y puede ser uno de estos valores.
Valor | 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 diferenciosamente, 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 0
es , el agente de replicación no se apaga. Si 1
es , 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 podría estar fuera de sincronización e informa de la diferencia entre el número esperado y el número real de filas.
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 podría estar fuera de sincronización e informa de la diferencia entre el número esperado y el número real de filas.
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 de forma selectiva las columnas y no puede funcionar en una vista o partición vertical 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 entre los dos servidores; es decir, las tablas deben tener las mismas columnas existentes en el mismo orden, los mismos tipos de datos y longitudes, y las mismas NULL
/NOT NULL
condiciones. Por ejemplo, si el publicador hizo un CREATE TABLE
, un para ALTER TABLE
agregar columnas, pero el script aplicado en el suscriptor es una tabla simple CREATE
, la estructura no es la misma. Si no está seguro de que la estructura de las dos tablas es idéntica, examine sys.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.