lunes, 9 de octubre de 2017

SQL Server DBCC

Comandos DBCC


Las personas que iniciamos en las actividades de administración de Microsoft SQL Server, siempre nos enfrentamos con la necesidad de llevar a cabo comprobaciones de las bases de datos que están actualmente en el servidor y hemos oído de los comandos DBCC, pero que son realmente estos comandos.
No pretendo copiar o sustituir la documentación de Microsoft SQL Server al respecto, simplemente deseo hacer un recuento de los comandos y apoyar el uso de estos.
Iniciemos definiendo que son estos comandos, DBCC son las siglas de Database Console Commands que se han desarrollado para SQL Server, aunque el que más se conoce es DBCC CHECKDB que nos ayuda a validar la consistencia de la base de datos, existen una serie de comandos que pueden ser clasificados en las siguientes categorías:

Categoría

Acciones

MantenimientoMaintenance
Tareas de mantenimiento en las bases de datos, los índices o los grupos de archivos.Maintenance tasks on a database, index, or filegroup.
VariosMiscellaneous
Tareas varias como habilitar marcas de seguimiento o quitar una DLL de la memoria.Miscellaneous tasks such as enabling trace flags or removing a DLL from memory.
InformativaInformational
Tareas que recopilan y muestran diversos tipos de información.Tasks that gather and display various types of information.
ValidaciónValidation
Operaciones de validación en una base de datos, tabla, índice, catálogo, grupo de archivos o asignación de páginas de base de datos.

Los comandos que se engloban es las categorías anteriormente indicadas reciben parámetros, algunos por omisión, y devuelven valores específicos de acuerdo con las características del comando.
Es importante indicar que toda la actividad de los comandos DBCC queda registrada en el Log de Microsoft SQL Server, por lo que si el comando se ejecuta correctamente, se indicara en el registro correspondiente. Sin embargo, si se detecta un error en la ejecución se encontrará un archivo de volcado denominado SQLDUMPnnn.txt (nnn se refiere a un consecutivo), que se localizara en el directorio:

“\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Log” 

donde el directorio denominado "MSSQLxx.MSSQLSERVER" esta formado por la version de Microsoft SQL Server y el nombre de la instancia, correspondiente, de tal forma que xx es la versión de Microsoft SQL Server y en este caso se ha indicado la instancia de default MSSQLSERVER, será necesario sustituir éste por el nombre de la instancia correspondiente.

Recuérdese que hablamos de varios tipos de comandos, por lo que no todos los comandos podrán generar un registro de error, ya que algunos son informativos.

Iniciare la discusión de los comandos DBCC de la categoría Validación, que es donde se encuentra el comando DBCC CHECKDB que se ha mencionado anteriormente.

Comandos de validación DBCC

Los comandos que se incluyen en esta categoría son:

Comando DBCC

Descripción

Comprueba la coherencia de las estructuras de asignación de espacio en disco de una base de datos determinada.
Comprueba la asignación y la integridad estructural de todas las tablas y vistas indizadas en el grupo de archivos especificado de la base de datos actual.
Comprueba la coherencia del catálogo en la base de datos especificada. La base de datos debe estar en línea.
Comprueba el valor de identidad actual de la tabla especificada en SQL Server y, si fuera necesario, lo cambia.
Comprueba la integridad de una restricción especificada o de todas las restricciones de una tabla determinada en la base de datos actual.
Comprueba la integridad de todas las páginas y estructuras que constituyen la tabla o vista indizada.
Comprueba la integridad física y lógica de todos los objetos de la base de datos especificada.

Es importante mencionar que estos comandos operan en una instantánea de la base de datos interna de solo lectura que crea el Motor de base de datos. Así se evitan problemas de bloqueo y simultaneidad cuando se ejecutan estos comandos. Sin embargo, es necesario indicar que esta situación no siempre es necesaria ya que si la base de datos está en línea se ejecuta en tiempo real y solo se lleva a cabo el bloqueo de las tablas en su momento, para asegurar la coherencia de los objetos a comprobar.

Comandos de mantenimiento DBCC

Los comandos que se incluyen en esta categoría son:

Comando DBCC

Descripción

Recupera el espacio de las columnas de longitud variable quitadas en tablas o vistas indizadas.
Desfragmenta los índices de la tabla o la vista especificada.
Vuelve a generar uno o varios índices para una tabla en la base de datos especificada.
Reduce el tamaño de los archivos de datos y de registro de la base de datos especificada.
Quita todos los búferes borrados del grupo de búferes y los objetos de almacén de columnas desde el grupo de objetos de almacén de columnas.
Puede reducir un archivo a un tamaño menor que el tamaño especificado cuando se creó.
Quita todos los elementos de la memoria caché del plan, quita un plan concreto de la misma especificando un identificador de plan o un identificador SQL, o quita todas las entradas de caché asociadas a un grupo de recursos de servidor especificado.
Informa sobre imprecisiones de recuento de filas y páginas de las vistas de catálogo y las corrige.

Estos comandos son muy utilizados en operaciones de mantenimiento de las instancias y bases de datos, ya que como puede verse nos ayudan a realizar limpieza, recuperación de espacios y regeneraciones que son necesarios en la administración.

Comandos informativos DBCC

Los comandos que se incluyen en esta categoría son:

Comando DBCC

Descripción

DBCC INPUTBUFFER
Muestra la última instrucción enviada desde el cliente a una instancia de Microsoft SQL Server.
DBCC SHOWCONTIG
Muestra información sobre la fragmentación de los datos y los índices de la tabla o vista especificada.
DBCC OPENTRAN
Ayuda a identificar las transacciones activas que pueden evitar el truncamiento del registro.
DBCC SQLPERF
Proporciona estadísticas de uso del espacio del registro de transacciones para todas las bases de datos.
DBCC OUTPUTBUFFER
Devuelve el búfer de salida actual en formato hexadecimal y ASCII para el elemento especificado session_id.
DBCC TRACESTATUS
Muestra el estado de las marcas de seguimiento, asociado con los comandos varias DBCC TRANCEON y DBCC TRACEOFF
DBCC PROCCACHE
Muestra información acerca de la caché de procedimientos en forma de tabla.
DBCC USEROPTIONS
Devuelve las opciones SET activas para la conexión actual.
DBCC SHOW_STATISTICS
Muestra las estadísticas de optimización de consulta actuales de una tabla o vista indizada.

Como se puede observar, son comandos que nos brindan información que apoyan las actividades de administración de las instancias y bases de datos.

Comandos varios DBCC

Los comandos que se incluyen en esta categoría son:

Comando DBCC

Descripción

Descarga el procedimiento almacenado extendido especificado DLL de la memoria.
DBCC HELP
Devuelve información de la sintaxis del comando DBCC especificado.
Vacía la caché de autenticación de base de datos que contiene información sobre los inicios de sesión y las reglas de firewall para la base de datos de usuario actual en Base de Datos.
Deshabilita las marcas de seguimiento especificados.
Vaciados de la caché de conexión de consulta distribuida utilizada por las consultas distribuidas en una instancia de Microsoft SQL Server.
Habilita las marcas de seguimiento especificadas.
Libera todas las entradas de caché no utilizadas de todas las memorias caché.
Crea una nueva base de datos que contiene el esquema de todos los objetos y estadísticas de la base de datos de origen especificada.

Se observa que estos comandos son utilizados para apoyo de los comandos previamente indicados.
Llevare a cabo un pequeño análisis de cada uno de los comandos DBCC en posteriores entregas.

Conclusión

Microsoft SQL Server desde la aparición de la versión 6.0 en 1996, ha incorporado las facilidades administrativas a través de comandos, con la finalidad de que los administradores puedan apoyarse en sus actividades y mantengan la operatividad de las bases de datos.
Los comandos que aquí se han indicado, forman parte de ese objetivo, hasta la fecha estos comandos han ofrecido la funcionalidad requerida, no es posible saber si en un futuro habrá mas comandos, o se eliminaran otros, lo que si es seguro, es que sabiendo utilizar los anteriores comandos, un administrador de bases de datos, contará con las herramientas para garantizar la operatividad de las bases de datos a su cargo.
 

No hay comentarios.:

Publicar un comentario