DBCC (Transact-SQL)
Se aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
El lenguaje de programación Transact-SQL proporciona instrucciones DBCC que actúan como comandos de consola de base de datos en SQL Server.
Las instrucciones de comandos de consola de base de datos se dividen en las siguientes categorías.
Categoría de comando | Acciones |
---|---|
Mantenimiento | Tareas de mantenimiento en las bases de datos, los índices o los grupos de archivos. |
Varios | Tareas varias como habilitar marcas de seguimiento o quitar una DLL de la memoria. |
Informativo | Tareas que recopilan y muestran diversos tipos de información. |
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. |
Los comandos DBCC reciben parámetros de entrada y devuelven valores. Todos los parámetros de los comandos DBCC pueden aceptar literales Unicode y DBCS.
Uso de comandos DBCC en instantáneas internas de la base de datos
Los siguientes comandos DBCC operan en una instantánea de la base de datos interna de solo lectura que crea el Motor de base de datos. Esta instantánea evita problemas de bloqueo y de simultaneidad cuando se ejecutan estos comandos. Para más información, vea Instantáneas de base de datos (SQL Server).
DBCC CHECKALLOC
DBCC CHECKCATALOG
DBCC CHECKDB
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 la base de datos
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ónALTER 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. - Con 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
Nota
Intentar ejecutar DBCC CHECKALLOC
, o la parte equivalente de DBCC CHECKDB
, con la opción WITH TABLOCK
requiere un bloqueo exclusivo de base de datos (X
). Este bloqueo de base de datos no se puede definir ni en tempdb
ni en master
y probablemente produzca error en todas las demás bases de datos.
Nota
DBCC CHECKDB
produce un error cuando se ejecuta en master
si no se puede crear una instantánea de base de datos interna.
Generación de informes de progreso para comandos DBCC
La vista de catálogo sys.dm_exec_requests
contiene información sobre el progreso y la fase actual de ejecución de los comandos DBCC CHECKDB
, CHECKFILEGROUP
y CHECKTABLE
. La columna percent_complete
indica el porcentaje del comando que se ha completado, mientras que la columna command
informa de la fase actual de ejecución de este.
La definición de una unidad de progreso depende de la fase actual de ejecución del comando DBCC. En ocasiones, se informa del progreso con la granularidad de una página de base de datos; en otras fases, se informa del mismo con la granularidad de una sola base de datos o reparación de asignaciones. En la siguiente tabla se describe cada una de las fases de ejecución y la granularidad con la que el comando informa del progreso.
Fase de ejecución | Descripción | Granularidad de informe de progreso |
---|---|---|
DBCC TABLE CHECK |
Durante esta fase se comprueba la coherencia lógica y física de los objetos de la base de datos. | Informe de progreso en el nivel de página de la base de datos. El valor del informe de progreso se actualiza para cada 1.000 páginas de base de datos comprobadas. |
DBCC TABLE REPAIR |
Durante esta fase de realizan reparaciones de base de datos si se especifican REPAIR_FAST , REPAIR_REBUILD o REPAIR_ALLOW_DATA_LOSS y existen errores de objeto que necesiten reparación. |
Informe de progreso para cada reparación individual. El contador se actualiza para cada reparación finalizada. |
DBCC ALLOC CHECK |
Durante esta fase se comprueban las estructuras de asignación de la base de datos. Nota: DBCC CHECKALLOC realiza las mismas comprobaciones. |
El progreso no se notifica |
DBCC ALLOC REPAIR |
Durante esta fase de realizan reparaciones de base de datos si se especifican REPAIR_FAST , REPAIR_REBUILD o REPAIR_ALLOW_DATA_LOSS y existen errores de asignación que necesiten reparación. |
El progreso no se notifica. |
DBCC SYS CHECK |
Durante esta fase se comprueban las tablas de sistema de la base de datos. | Informe de progreso en el nivel de página de la base de datos. El valor del informe del progreso se actualiza para cada 1000 páginas de base de datos comprobadas. |
DBCC SYS REPAIR |
Durante esta fase de realizan reparaciones de base de datos si se especifican REPAIR_FAST , REPAIR_REBUILD o REPAIR_ALLOW_DATA_LOSS y existen errores de tabla del sistema que necesiten reparación. |
Informe de progreso para cada reparación individual. El contador se actualiza para cada reparación finalizada. |
DBCC SSB CHECK |
Durante esta fase se comprueban los objetos de SQL Server Service Broker. Nota: Esta fase no se ejecuta cuando se ejecuta DBCC CHECKTABLE . |
El progreso no se notifica. |
DBCC CHECKCATALOG |
Durante esta fase se comprueba la coherencia de los catálogos de la base de datos. Nota: Esta fase no se ejecuta cuando se ejecuta DBCC CHECKTABLE . |
El progreso no se notifica. |
DBCC IVIEW CHECK |
Durante esta fase se comprueba la coherencia lógica de cualquier vista indizada presente en la base de datos. | Informe de progreso en el nivel de la vista de base de datos individual que se está comprobando. |
Instrucciones informativas
- DBCC INPUTBUFFER
- DBCC SHOWCONTIG
- DBCC OPENTRAN
- DBCC OUTPUTBUFFER
- DBCC PROCCACHE
- DBCC SHOW_STATISTICS
- DBCC SQLPERF
- DBCC TRACESTATUS
- DBCC USEROPTIONS
Instrucciones de validación
- DBCC CHECKALLOC
- DBCC CHECKCATALOG
- DBCC CHECKCONSTRAINTS
- DBCC CHECKDB
- DBCC CHECKFILEGROUP
- DBCC CHECKIDENT
- DBCC CHECKTABLE
Instrucciones de mantenimiento
- DBCC CLEANTABLE
- DBCC DBREINDEX
- DBCC DROPCLEANBUFFERS
- DBCC FREEPROCCACHE
- DBCC INDEXDEFRAG
- DBCC SHRINKDATABASE
- DBCC SHRINKFILE
- DBCC UPDATEUSAGE
Otras instrucciones
- DBCC dllname (FREE)
- DBCC HELP
- DBCC FLUSHAUTHCACHE
- DBCC TRACEOFF
- DBCC FREESESSIONCACHE
- DBCC TRACEON
- DBCC FREESYSTEMCACHE
- DBCC CLONEDATABASE (Se aplica a: SQL Server 2014 (12.x) Service Pack 2 y versiones posteriores).