DBCC (Transact-SQL)DBCC (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelosAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

El lenguaje de programación Transact-SQLTransact-SQL proporciona instrucciones DBCC que actúan como comandos de consola de base de datos en SQL ServerSQL Server.The Transact-SQLTransact-SQL programming language provides DBCC statements that act as Database Console Commands for SQL ServerSQL Server.

Las instrucciones de comandos de consola de base de datos se dividen en las siguientes categorías.Database Console Command statements are grouped into the following categories.

Categoría de comandoCommand category AccionesPerform
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.Validation operations on a database, table, index, catalog, filegroup, or allocation of database pages.

Los comandos DBCC reciben parámetros de entrada y devuelven valores.DBCC commands take input parameters and return values. Todos los parámetros de los comandos DBCC pueden aceptar literales Unicode y DBCS.All DBCC command parameters can accept both Unicode and DBCS literals.

Uso de comandos DBCC en instantáneas internas de la base de datosDBCC Internal Database Snapshot Usage

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 datosDatabase Engine.The following DBCC commands operate on an internal read-only database snapshot that the Motor de base de datosDatabase Engine creates. Así se evitan problemas de bloqueo y simultaneidad cuando se ejecutan estos comandos.This prevents blocking and concurrency problems when these commands are executed. Para más información, vea Instantáneas de base de datos (SQL Server).For more information, see Database Snapshots (SQL Server).

  • DBCC CHECKALLOCDBCC CHECKALLOC
  • DBCC CHECKCATALOGDBCC CHECKCATALOG
  • DBCC CHECKDBDBCC CHECKDB
  • DBCC CHECKFILEGROUPDBCC CHECKFILEGROUP
  • DBCC CHECKTABLEDBCC CHECKTABLE

Cuando se ejecuta uno de estos comandos DBCC, el Motor de base de datosDatabase Engine crea una instantánea de la base de datos y la pone en un estado coherente desde el punto de vista transaccional.When you execute one of these DBCC commands, the Motor de base de datosDatabase Engine creates a database snapshot and brings it to a transactionally consistent state. El comando DBCC ejecuta entonces las comprobaciones de esta instantánea.The DBCC command then runs the checks against this snapshot. Una vez completado el comando DBCC, la instantánea se quita.After the DBCC command is completed, this snapshot is dropped.

Algunas veces no es necesaria una instantánea de la base de datos interna o no se puede crear.Sometimes an internal database snapshot is not required or cannot be created. Cuando esto ocurre, el comando DBCC se ejecuta de nuevo en la base de datos real.When this occurs, the DBCC command executes against the actual database. 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.If the database is online, the DBCC command uses table-locking to ensure the consistency of the objects that it is checking. Este comportamiento es el mismo que si se especificara la opción WITH TABLOCK.This behavior is the same as if the WITH TABLOCK option were specified.

No se crea ninguna instantánea de la base de datos interna al ejecutar un comando DBCC:An internal database snapshot is not created when a DBCC command is executed:

  • En master y cuando la instancia de SQL ServerSQL Server se está ejecutando en el modo de usuario único.Against master, and the instance of SQL ServerSQL Server is running in single-user mode.
  • 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.Against a database other than master, but the database has been put in single-user mode by using the ALTER DATABASE statement.
  • En una base de datos de solo lectura.Against a read-only database.
  • En una base de datos que se ha establecido en modo de emergencia mediante la instrucción ALTER DATABASE.Against a database that has been set in emergency mode by using the ALTER DATABASE statement.
  • En tempdb.Against tempdb. En este caso, no se puede crear una instantánea de la base de datos debido a restricciones internas.In this case, a database snapshot cannot be created because of internal restrictions.
  • Utilizando la opción WITH TABLOCK.Using the WITH TABLOCK option. En este caso, DBCC respeta la solicitud no creando ninguna instantánea de la base de datos.In this case, DBCC honors the request by not creating a database snapshot.

Los comandos DBCC utilizan bloqueos de tabla en lugar de instantáneas internas de la base de datos cuando el comando se ejecuta en:The DBCC commands use table locks instead of the internal database snapshots when the command is executed against the following:

  • Un grupo de archivos de solo lecturaA read-only filegroup
  • Un sistema de archivos FATAn FAT file system
  • Un volumen que no admite "flujos con nombre"A volume that does not support 'named streams'
  • Un volumen que no admite "flujos alternativos"A volume that does not support 'alternate streams'

Nota

Intentar ejecutar DBCC CHECKALLOC, o la parte equivalente de DBCC CHECKDB, utilizando la opción WITH TABLOCK requiere un bloqueo X de base de datos.Trying to run DBCC CHECKALLOC, or the equivalent part of DBCC CHECKDB, by using the WITH TABLOCK option requires a database X lock. 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.This database lock cannot be set on tempdb or master and will probably fail on all other databases.

Nota

DBCC CHECKDB produce un error cuando se ejecuta en master si no se puede crear una instantánea de base de datos interna.DBCC CHECKDB fails when it is run against master if an internal database snapshot cannot be created.

Generación de informes de progreso para comandos DBCCProgress Reporting for DBCC Commands

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.The sys.dm_exec_requests catalog view contains information about the progress and the current phase of execution of the DBCC CHECKDB, CHECKFILEGROUP, and CHECKTABLE commands. 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.The percent_complete column indicates the percentage complete of the command, and the command column reports the current phase of the execution of the command.

La definición de una unidad de progreso depende de la fase actual de ejecución del comando DBCC.The definition of a unit of progress depends on the current phase of execution of the DBCC command. 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.Sometimes progress is reported at the granularity of a database page, in other phases it is reported at the granularity of a single database or allocation repair. 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.The following table describes each phase of execution, and the granularity at which the command reports progress.

Fase de ejecuciónExecution phase DescripciónDescription Granularidad de informe de progresoProgress reporting granularity
DBCC TABLE CHECKDBCC TABLE CHECK Durante esta fase se comprueba la coherencia lógica y física de los objetos de la base de datos.The logical and physical consistency of the objects in the database is checked during this phase. Informe de progreso en el nivel de página de la base de datos.Progress reported at the database page level.

El valor del informe de progreso se actualiza para cada 1.000 páginas de base de datos comprobadas.The progress reporting value is updated for each 1000 database pages that are checked.
DBCC TABLE REPAIRDBCC 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 ser reparados.Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are object errors that must be repaired. Informe de progreso para cada reparación individual.Progress reported at the individual repair level.

El contador se actualiza para cada reparación finalizada.The counter is updated for each repair that is completed.
DBCC ALLOC CHECKDBCC ALLOC CHECK Durante esta fase se comprueban las estructuras de asignación de la base de datos.Allocation structures in the database are checked during this phase.

Nota: DBCC CHECKALLOC realiza las mismas comprobaciones.Note: DBCC CHECKALLOC performs the same checks.
No se informa del progreso.Progress is not reported
DBCC ALLOC REPAIRDBCC 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 ser reparados.Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are allocation errors that must be repaired. No se informa del progreso.Progress is not reported.
DBCC SYS CHECKDBCC SYS CHECK Durante esta fase se comprueban las tablas de sistema de la base de datos.Database system tables are checked during this phase. Informe de progreso en el nivel de página de la base de datos.Progress reported at the database page level.

El valor del informe del progreso se actualiza para cada 1000 páginas de base de datos comprobadas.The progress reporting value is updated for every 1000 database pages that are checked.
DBCC SYS REPAIRDBCC 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 ser reparados.Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are system table errors that must be repaired. Informe de progreso para cada reparación individual.Progress reported at the individual repair level.

El contador se actualiza para cada reparación finalizada.The counter is updated for each repair that is completed.
DBCC SSB CHECKDBCC SSB CHECK Durante esta fase se comprueban los objetos de SQL ServerSQL Server Service Broker.SQL ServerSQL Server Service Broker objects are checked during this phase.

Nota: Esta fase no se ejecuta cuando DBCC CHECKTABLE se ejecuta.Note: This phase is not executed when DBCC CHECKTABLE is executed.
No se informa del progreso.Progress is not reported.
DBCC CHECKCATALOGDBCC CHECKCATALOG Durante esta fase se comprueba la coherencia de los catálogos de la base de datos.The consistency of database catalogs are checked during this phase.

Nota: Esta fase no se ejecuta cuando DBCC CHECKTABLE se ejecuta.Note: This phase is not executed when DBCC CHECKTABLE is executed.
No se informa del progreso.Progress is not reported.
DBCC IVIEW CHECKDBCC IVIEW CHECK Durante esta fase se comprueba la coherencia lógica de cualquier vista indizada presente en la base de datos.The logical consistency of any indexed views present in the database is checked during this phase. Informe de progreso en el nivel de la vista de base de datos individual que se está comprobando.Progress reported at the level of the individual database view that is being checked.

Instrucciones informativasInformational Statements

DBCC INPUTBUFFERDBCC INPUTBUFFER DBCC SHOWCONTIGDBCC SHOWCONTIG
DBCC OPENTRANDBCC OPENTRAN DBCC SQLPERFDBCC SQLPERF
DBCC OUTPUTBUFFERDBCC OUTPUTBUFFER DBCC TRACESTATUSDBCC TRACESTATUS
DBCC PROCCACHEDBCC PROCCACHE DBCC USEROPTIONSDBCC USEROPTIONS
DBCC SHOW_STATISTICSDBCC SHOW_STATISTICS

Instrucciones de validaciónValidation Statements

DBCC CHECKALLOCDBCC CHECKALLOC DBCC CHECKFILEGROUPDBCC CHECKFILEGROUP
DBCC CHECKCATALOGDBCC CHECKCATALOG DBCC CHECKIDENTDBCC CHECKIDENT
DBCC CHECKCONSTRAINTSDBCC CHECKCONSTRAINTS DBCC CHECKTABLEDBCC CHECKTABLE
DBCC CHECKDBDBCC CHECKDB

Instrucciones de mantenimientoMaintenance Statements

DBCC CLEANTABLEDBCC CLEANTABLE DBCC INDEXDEFRAGDBCC INDEXDEFRAG
DBCC DBREINDEXDBCC DBREINDEX DBCC SHRINKDATABASEDBCC SHRINKDATABASE
DBCC DROPCLEANBUFFERSDBCC DROPCLEANBUFFERS DBCC SHRINKFILEDBCC SHRINKFILE
DBCC FREEPROCCACHEDBCC FREEPROCCACHE DBCC UPDATEUSAGEDBCC UPDATEUSAGE

Instrucciones variasMiscellaneous Statements

DBCC dllname (FREE)DBCC dllname (FREE) DBCC HELPDBCC HELP
DBCC FLUSHAUTHCACHEDBCC FLUSHAUTHCACHE DBCC TRACEOFFDBCC TRACEOFF
DBCC FREESESSIONCACHEDBCC FREESESSIONCACHE DBCC TRACEONDBCC TRACEON
DBCC FREESYSTEMCACHEDBCC FREESYSTEMCACHE DBCC CLONEDATABASEDBCC CLONEDATABASE

Se aplica a: SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 y versiones posterioresApplies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 and later.