Comandos DBCC

Comandos DBCC

DataBase Command Console

SQL Server tiene un conjuntos de comandos llamados Comandos de Consola de Base de datos, sus siglas en inglés DBCC que significan Database Command Console.

Los comandos de consola de base de datos se dividen en las siguientes categorías.

  1. Mantenimiento: Tareas de mantenimiento en las bases de datos, los índices o los grupos de archivos.
  2. Varias: Tareas varias como habilitar marcas de seguimiento o quitar una DLL de la memoria.
  3. Informativa: Tareas que recopilan y muestran diversos tipos de información.
  4. Validación: 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.



Bloqueos en comando DBCC

SQL Server soluciona de manera óptima los bloqueos al usar los comando DBCC creando una instantánea de la base de datos interna de solo lectura, evita así los problemas de bloqueo y simultaneidad cuando se ejecutan estos comandos.   (Ver Instantáneas de Base de datos)

Los comandos DBCC que crean instantáneas de base de datos interna para evitar el bloque son:

  • DBCC CHECKALLOC
  • DBCC CHECKDB
  • DBCC CHECKCATALOG
  • DBCC CHECKFILEGROUP
  • DBCC CHECKTABLE

Cuando se ejecuta uno de estos comandos DBCC, el Motor de base de datos crea una instantánea de la base de datos y la pone en un estado coherente desde el punto de vista transaccional. El comando DBCC ejecuta entonces las comprobaciones de esta instantánea. Una vez completado el comando DBCC, la instantánea se quita.

Algunas veces no es necesaria una instantánea de la base de datos interna o no se puede crear.  Cuando esto ocurre, el comando DBCC se ejecuta de nuevo en la base de datos real. Si la base de datos está en línea, el comando DBCC utiliza el bloqueo de tabla para asegurar la coherencia de los objetos que está  comprobando.
Este comportamiento es el mismo que si se especificara la opción WITH TABLOCK.

No se crea ninguna instantánea de la base de datos interna al ejecutar un comando DBCC.

  • En master y cuando la instancia de SQL Server se está ejecutando en el modo de usuario único.
  • En una base de datos distinta de master, pero cuando la base de datos se haya puesto en
    el modo de usuario único mediante la instrucción ALTER DATABASE.
  • En una base de datos de solo lectura.
  • En una base de datos que se ha establecido en modo de emergencia mediante la instrucción ALTER DATABASE.
  • En tempdb. En este caso, no se puede crear una instantánea de la base de datos debido a restricciones internas.
  • Utilizando la opción WITH TABLOCK. En este caso, DBCC respeta la solicitud no creando ninguna instantánea de la base de datos.

Los comandos DBCC utilizan bloqueos de tabla en lugar de instantáneas internas de la base de datos cuando el comando se ejecuta en:

  • Un grupo de archivos de solo lectura
  • Un sistema de archivos FAT
  • Un volumen que no admite “flujos con nombre”
  • Un volumen que no admite “flujos alternativos”

Los comandos DBCC en SQL Server de cada categoría son:

Instrucciones informativas

DBCC INPUTBUFFER
DBCC SHOWCONTIG
DBCC OPENTRAN
DBCC SQLPERF
DBCC OUTPUTBUFFER
DBCC TRACESTATUS
DBCC PROCCACHE
DBCC USEROPTIONS
DBCC SHOW_STATISTICS

Instrucciones de validación

DBCC CHECKALLOC
DBCC CHECKFILEGROUP
DBCC CHECKCATALOG
DBCC CHECKIDENT
DBCC CHECKCONSTRAINTS
DBCC CHECKTABLE
DBCC CHECKDB

Instrucciones de mantenimiento

DBCC CLEANTABLE
DBCC INDEXDEFRAG
DBCC DBREINDEX
DBCC SHRINKDATABASE
DBCC DROPCLEANBUFFERS
DBCC SHRINKFILE
DBCC FREEPROCCACHE
DBCC UPDATEUSAGE

Instrucciones varias

DBCC dllname (FREE)
DBCC HELP
DBCC FREESESSIONCACHE
DBCC TRACEOFF
DBCC FREESYSTEMCACHE
DBCC TRACEON