martes, 10 de octubre de 2017

SQL Server DBCC CHECKALLOC

Comando DBCC CHECKALLOC

Ya he indicado, en Comandos DBCC de validación, que este comando comprueba la coherencia de las estructuras de asignación de espacio en disco de una base de datos determinada. Es importante indicar que se lleva a cabo la comprobación de todas las páginas de la base de datos, sin importar el tipo de página u objeto al que pertenecen. Asimismo se efectúa la validación de diversas estructuras internas que se usan para realizar el seguimiento de las páginas y las relaciones entre ellas.
La sintaxis de este comando en su forma más simple es:

USE database_name;
GO

DBCC CHECKALLOC;

Como puede apreciarse no se ha especificado una base de datos, por lo que de ésta forma se llevara a cabo la comprobación de las estructuras de la base de datos actual, esto es por omisión se tomara la base de datos que se haya seleccionado, hay que recordar que la base de datos por omisión cuando accedemos a Microsoft SQL Server, ya sea a través de SQL Server Management Studio  o de SQLCMD, es master.

La sintaxis que se usa más a menudo es:

USE master;
GO
DBCC CHECKALLOC (database_name);
Donde: database_name es el nombre de la base de datos que se desea validar.  

Es importante indicar que aunque se puede indicar el identificador de base de datos (database_id), éste es un número que está asociado al nombre de la base de datos, por lo que es más común el uso del nombre de la base de datos. 

Existen algunas opciones que pueden ser utilizadas con el comando, estas opciones son:


REPAIR_ALLOW_DATA_LOSS 
Intenta reparar los errores encontrados. Estas reparaciones pueden ocasionar alguna pérdida de datos. Es necesario que database_name deba estar en modo de usuario único.
ALL_ERRORMSGS
Muestra todos los mensajes de error. De forma predeterminada, se muestran todos los mensajes de error. Especificar u omitir esta opción no tiene ningún efecto.
NO_INFOMSGS
Suprime todos los mensajes informativos y el informe del espacio utilizado.
TABLOCK
Hace que el comando DBCC obtenga un bloqueo de base de datos exclusivo.
ESTIMATEONLY
Muestra la cantidad estimada de espacio de tempdb que se necesita para ejecutar DBCC CHECKALLOC cuando todas las demás opciones están especificadas.

Ejemplos de DBCC CHECKALLOC


Mostraré algunos ejemplos de uso de este comando:
DBCC CHECKALLOC (db1, REPAIR_ALLOW_DATA_LOSS)

Este comando efectuará la comprobación de la base de datos db1 e intentara reparar las páginas permitiendo la perdida de datos.

DBCC CHECKALLOC (db1) WITH ALL_ERRORMSGS
Este comando efectuará la comprobación de la base de datos db1 mostrando todos los mensajes de error.

DBCC CHECKALLOC (db1) WITH NO_INFOMSGS
Este comando efectuará la comprobación de la base de datos db1, sin mostrar los mensajes de lo realizado, solo indicara que el comando termino.

Notas de Microsoft
La funcionalidad de DBCC CHECKALLOC se incluye en DBCC CHECKDB y DBCC CHECKFILEGROUPEsto significa que no tiene que ejecutar DBCC CHECKALLOC independientemente de estas instrucciones. DBCC CHECKALLOC no comprueba los datos de FILESTREAM. FILESTREAM almacena los objetos binarios grandes (BLBS) en el sistema de archivos.

Comentarios

Si bien, DBCC CHECKALLOC nos permite llevar a cabo la reparación de alguna página con pérdida de datos, se recomienda llevar a cabo la restauración de la base de datos a partir  de una copia de seguridad que se tenga.  Debe tenerse en cuenta que, de no existir una copia de seguridad, entonces proceda con la reparación, pero recuerde llevar a cabo la copia de seguridad una vez que ha finalizado con las reparaciones.

No hay comentarios.:

Publicar un comentario