Comando DBCC CHECKTABLE
Ya he
indicado, en Comandos DBCC de validación, que este comando comprueba la
integridad de todas las páginas y estructuras que constituyen la tabla o vista
indexada. En términos generales el comando comprueba las siguientes estructuras
en la tabla especificada:
· Las
páginas de índice, consecutivas, de objetos grandes (LOB) y de datos de
desbordamiento de fila están vinculadas correctamente.
· Los
índices se encuentran en el orden correcto.
· Los
índices son coherentes.
· Los
datos de cada página son razonables, incluidas las columnas calculadas.
· Los
desplazamientos de página son razonables.
· Cada
renglón de la tabla base tiene un renglón correspondiente en cada índice no clúster
y viceversa.
· Todos
los renglones de un índice o tabla con particiones están en la partición
correcta.
· Coherencia
a nivel de vínculo entre el sistema de archivos y la tabla al almacenar datos de tipo varbinary (max) del sistema de
archivos con FILESTREAM.
Este
comando tiene como sintaxis básica la siguiente:
USE database_name;GO
DBCC CHECKTABLE ([table_name]);
Con este
comando se lleva a cabo la comprobación de la integridad de páginas y
estructuras de la tabla indicada, es posible que sea indicado el nombre de una vista
que esté indexada. Debe tenerse en cuenta que los nombres de tabla o de vista
deben cumplir con las reglas de los identificadores.
La sintaxis
que se utiliza a menudo es:
USE database_name;
GO
DBCC CHECKTABLE ([table_name], NOINDEX);
Con este
comando se lleva a cabo la comprobación de integridad de las páginas sin comprobaciones
intensivas de índices no clúster para las tablas de usuario, solo para las
tablas de sistema, esto con el objeto de reducir el tiempo de ejecución.
Existen
algunos argumentos opcionales que pueden ser utilizadas con el comando, estos
son:
NOINDEX
|
Como se indicó
anteriormente, se especifica que no se deben realizar comprobaciones
intensivas de índices no clúster para las tablas de usuario. Esto reduce el
tiempo total de ejecución.
|
index_id
|
Es el número de
identificación (Id.) del índice para el que se van a ejecutar las
comprobaciones de integridad, solo en ese índice, junto con el índice clúster.
|
REPAIR_ALLOW_DATA_LOSS
|
Intenta reparar
todos los errores indicados. Estas reparaciones pueden ocasionar alguna
pérdida de datos.
|
REPAIR_FAST
|
La sintaxis solo se
mantiene por razones de compatibilidad con versiones anteriores. No se
realizan acciones de reparación.
|
REPAIR_REBUILD
|
Realiza reparaciones
que no tienen ninguna posibilidad de pérdida de datos. Pueden ser
reparaciones rápidas, como la reparación de las filas que faltan en índices
no clúster, y reparaciones que consumen más tiempo, como regenerar un índice.
Este argumento no repara los errores que implican datos de FILESTREAM.
|
ALL_ERRORMSGS
|
De forma
predeterminada, se muestran todos los mensajes de error. Especificar u omitir
esta opción no tiene ningún efecto.
|
EXTENDED_LOGICAL_CHECKS
|
Si el nivel de
compatibilidad es 100 (correspondiente a Microsoft SQL Server 2008) o superior, realiza
comprobaciones de coherencia lógica en una vista indizada, en índices XML y
en índices espaciales, en caso de que los haya.
|
NO_INFOMSGS
|
Suprime todos los
mensajes de información.
|
TABLOCK
|
Hace que se reciba
un bloqueo de tabla compartido en vez de utilizar una instantánea de base de
datos interna. Este argumento hará que el comando se ejecute más rápido en
una tabla con mucha carga, pero disminuirá la simultaneidad disponible sobre
la tabla mientras el comando está ejecutándose.
|
ESTIMATEONLY
|
Muestra la cantidad
estimada de espacio de tempdb necesario para ejecutar el comando con todas
las demás opciones especificadas.
|
PHYSICAL_ONLY
|
Limita la
comprobación de la integridad a la estructura física de la página, los encabezados
de registro y la estructura física de árboles b. Este argumento es excluyente
de DATA_PURITY
|
DATA_PURITY
|
Hace que se compruebe
si la tabla contiene valores de columna que no son válidos o están fuera del
intervalo correcto. Este argumento es excluyente de PHYSICAL_ONLY
|
MAXDOP =
number_of_processors
|
Invalida el grado
máximo de paralelismo de la opción de configuración de sp_configure para la
instrucción. (Este argumento funciona para Microsoft SQL Server 2014 SP 2 y superior)
|
Ejemplos de DBCC CHECKTABLE
Mostraré
algunos ejemplos de uso de este comando:
USE database_name;
GO
DBCC CHECKTABLE ('table_name’) WITH PHYSICAL_ONLY;
En el
ejemplo anterior se realiza una comprobación de carga baja de la tabla table_name
de la base de datos actual.
USE databse_name;
GO
DBCC CHECKTABLE ('table_name', 1);
En el
ejemplo se indica que se lleve a cabo la comprobación de un índice específico.
El valor de la identificación de un índice es posible obtenerlo mediante un
acceso a sys.indexes.
Nota de Microsoft
Para ejecutar DBCC CHECKTABLE en todas las tablas de
la base de datos, utilice DBCC CHECKDB.
Comentarios
Siempre se
ha recomendado que se utilice las opciones REPAIR solo como último recurso, ya
que es preferible restaurar a partir de una copia de seguridad. Cuando se
efectúan las operaciones de reparación éstas no tienen en cuenta ninguna de las
restricciones que puede haber en las tablas o entre ellas. Si no existe una
copia de seguridad, la ejecución de REPAIR puede corregir los errores
indicados. La opción REPAIR que se debe utilizar se especifica al final de la
lista de errores indicados.
Si fuera
necesario usar REPAIR, ejecute el comando DBCC CHECKTABLE sin una opción de
reparación para localizar el nivel de reparación que se va a utilizar. En caso
de que se llegue a utilizar la reparación con el nivel de
REPAIR_ALLOW_DATA_LOSS, se recomienda realizar una copia de seguridad de la
base de datos antes de ejecutar DBCC CHECKTABLE con esta opción. Una vez finalizadas todas las reparaciones,
realice una copia de seguridad de la base de datos.
No hay comentarios.:
Publicar un comentario