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

SE APLICA A: síSQL Server síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Comprueba la coherencia de las estructuras de asignación de espacio en disco de una base de datos determinada.Checks the consistency of disk space allocation structures for a specified database.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

DBCC CHECKALLOC   
[  
    ( database_name | database_id | 0   
      [ , NOINDEX   
      | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]  
    )  
    [ WITH   
        {   
          [ ALL_ERRORMSGS ]  
          [ , NO_INFOMSGS ]   
          [ , TABLOCK ]   
          [ , ESTIMATEONLY ]   
        }  
    ]  
]  

ArgumentosArguments

database_name | database_id | 0database_name | database_id | 0
Nombre o el identificador de la base de datos cuya asignación y uso de páginas se va a comprobar.The name or the ID of the database for which to check allocation and page usage. Si no se especifica o se especifica 0, se utiliza la base de datos actual.If not specified, or if 0 is specified, the current database is used. Los nombres de las bases de datos deben cumplir las reglas de los identificadores.Database names must follow the rules for identifiers.

NOINDEXNOINDEX
Especifica que no se deben comprobar los índices no clúster de las tablas de usuario.Specifies that nonclustered indexes for user tables should not be checked.
NOINDEX solo se mantiene por compatibilidad con versiones anteriores y no afecta a DBCC CHECKALLOC.NOINDEX is maintained for backward compatibility only and does not affect DBCC CHECKALLOC.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILDREPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Especifica que DBCC CHECKALLOC repare los errores que encuentre.Specifies that DBCC CHECKALLOC repair the found errors. database_name debe estar en modo de usuario único.database_name must be in single-user mode.

REPAIR_ALLOW_DATA_LOSSREPAIR_ALLOW_DATA_LOSS
Intenta reparar los errores encontrados.Tries to repair any errors that are found. Estas reparaciones pueden ocasionar alguna pérdida de datos.These repairs can cause some data loss. REPAIR_ALLOW_DATA_LOSS es la única opción que permite la reparación de los errores de asignación.REPAIR_ALLOW_DATA_LOSS is the only option that allows for allocation errors to be repaired.

REPAIR_FASTREPAIR_FAST
La sintaxis solo se mantiene por razones de compatibilidad con versiones anteriores.Syntax is maintained for backward compatibility only. No se realizan acciones de reparación.No repair actions are performed.

REPAIR_REBUILDREPAIR_REBUILD
No aplicable.Not applicable.
Utilice las opciones REPAIR solo como último recurso.Use the REPAIR options only as a last resort. Para reparar errores, se recomienda restaurar a partir de una copia de seguridad.To repair errors, we recommend restoring from a backup. Las operaciones de reparación no tienen en cuenta ninguna de las restricciones que puede haber en las tablas o entre ellas.Repair operations do not consider any of the constraints that may exist on or between tables. Si la tabla especificada está implicada en una o más restricciones, se recomienda ejecutar DBCC CHECKCONSTRAINTS tras una operación de reparación.If the specified table is involved in one or more constraints, we recommend running DBCC CHECKCONSTRAINTS after a repair operation. Si debe utilizar REPAIR, ejecute DBCC CHECKDB sin una opción de reparación para localizar el nivel de reparación que se va a utilizar.If you must use REPAIR, run DBCC CHECKDB without a repair option to find the repair level to use. Si utiliza el nivel REPAIR_ALLOW_DATA_LOSS, se recomienda realizar una copia de seguridad de la base de datos antes de ejecutar DBCC CHECKDB con esta opción.If you use the REPAIR_ALLOW_DATA_LOSS level, we recommend that you back up the database before you run DBCC CHECKDB with this option.

porWITH
Habilita la especificación de opciones.Enables options to be specified.

ALL_ERRORMSGSALL_ERRORMSGS
Muestra todos los mensajes de error.Displays all error messages. De forma predeterminada, se muestran todos los mensajes de error.All error messages are displayed by default. Especificar u omitir esta opción no tiene ningún efecto.Specifying or omitting this option has no effect.

NO_INFOMSGSNO_INFOMSGS
Suprime todos los mensajes informativos y el informe del espacio utilizado.Suppresses all informational messages and the report of space used.

TABLOCKTABLOCK
Hace que el comando DBCC obtenga un bloqueo de base de datos exclusivo.Causes the DBCC command to obtain an exclusive database lock.

ESTIMATE ONLYESTIMATE ONLY
Muestra la cantidad estimada de espacio de tempdb que se necesita para ejecutar DBCC CHECKALLOC cuando todas las demás opciones están especificadas.Displays the estimated amount of tempdb space that is required to run DBCC CHECKALLOC when all the other options are specified.

NotasRemarks

DBCC CHECKALLOC comprueba la asignación de todas las páginas de la base de datos, independientemente del tipo de página u objeto al que pertenezcan.DBCC CHECKALLOC checks the allocation of all pages in the database, regardless of the type of page or type of object to which they belong. También valida las diversas estructuras internas que se utilizan para realizar un seguimiento de estas páginas y de las relaciones entre ellas.It also validates the various internal structures that are used to keep track of these pages and the relationships between them. Si no se especifica NO_INFOMSGS, DBCC CHECKALLOC recopila información sobre uso de espacio de todos los objetos de la base de datos.If NO_INFOMSGS is not specified, DBCC CHECKALLOC collects space usage information for all objects in the database. Esta información se imprime junto con los errores encontrados.This information is printed together with any errors that are found.

Nota

La funcionalidad DBCC CHECKALLOC se incluye en DBCC CHECKDB y DBCC CHECKFILEGROUP.The DBCC CHECKALLOC functionality is included in DBCC CHECKDB and DBCC CHECKFILEGROUP. Esto significa que no tiene que ejecutar DBCC CHECKALLOC independientemente de estas instrucciones.This means that you do not have to run DBCC CHECKALLOC separately from these statements. DBCC CHECKALLOC no comprueba los FILESTREAM datos.DBCC CHECKALLOC does not check FILESTREAM data. FILESTREAM almacena los objetos binarios grandes (BLBS) en el sistema de archivos.FILESTREAM stores binary large objects (BLOBS) on the file system.

Instantánea de base de datos internaInternal Database Snapshot

DBCC CHECKALLOC utiliza una instantánea interna de base de datos para proporcionar la coherencia transaccional necesaria para realizar estas comprobaciones.DBCC CHECKALLOC uses an internal database snapshot to provide the transactional consistency that it needs to perform these checks. Si no es posible crear una instantánea o se especifica TABLOCK, DBCC CHECKALLOC intenta adquirir un bloqueo exclusivo (X) de la base de datos para obtener la coherencia necesaria.If a snapshot cannot be created, or TABLOCK is specified, DBCC CHECKALLOC tries to acquire an exclusive (X) lock on the database to obtain the required consistency.

Nota

Al ejecutar DBCC CHECKALLOC con tempdb, no se realiza ninguna comprobación.Running DBCC CHECKALLOC against tempdb does not perform any checks. Esto es debido a que, por motivos de rendimiento, las instantáneas de base de datos no están disponibles en tempdb.This is because, for performance reasons, database snapshots are not available on tempdb. Eso significa que no es posible obtener la coherencia transaccional necesaria.This means that the required transactional consistency cannot be obtained. Detenga e inicie el servicio MSSQLSERVER para resolver cualquier problema de asignación de tempdb que pueda existir.Stop and start the MSSQLSERVER service to resolve any tempdb allocation issues. Esta acción elimina y vuelve a crear la base de datos tempdb.This action drops and re-creates the tempdb database.

Descripción de los mensajes de error de DBCCUnderstanding DBCC Error Messages

Cuando finaliza el comando DBCC CHECKALLOC, se escribe un mensaje en el registro de errores de SQL ServerSQL Server.After the DBCC CHECKALLOC command finishes, a message is written to the SQL ServerSQL Server error log. Si el comando DBCC se ejecuta correctamente, el mensaje lo indica, así como el tiempo de ejecución del comando.If the DBCC command successfully executes, the message indicates a successful completion and the amount of time that the command ran. Si el comando DBCC se detiene antes de finalizar la comprobación debido a un error, el mensaje indica que el comando se ha cancelado, un valor de estado y el tiempo de ejecución del comando.If the DBCC command stops before completing the check because of an error, the message indicates the command was terminated, a state value, and the amount of time the command ran. En la tabla siguiente se muestran y describen los valores de estado que pueden aparecer en el mensaje.The following table lists and describes the state values that can be included in the message.

StateState DescripciónDescription
00 Se ha generado el error número 8930.Error number 8930 was raised. Indica un daño en los metadatos que provoca la cancelación del comando DBCC.This indicates a metadata corruption that caused the DBCC command to terminate.
11 Se ha generado el error número 8967.Error number 8967 was raised. Error DBCC interno.There was an internal DBCC error.
22 Error durante una reparación de base de datos en modo de emergencia.A failure occurred during emergency mode database repair.
33 Indica un daño en los metadatos que provoca la cancelación del comando DBCC.This indicates a metadata corruption that caused the DBCC command to terminate.
44 Se ha detectado una infracción de acceso o aserción.An assert or access violation was detected.
55 Error desconocido que cancela el comando DBCC.An unknown error occurred that terminated the DBCC command.

Informes de erroresError Reporting

Un archivo de minivolcado (SQLDUMPnnnn.txt) se crea en el directorio LOG de SQL ServerSQL Server siempre que DBCC CHECKALLOC detecta un error relacionado con datos dañados.A mini-dump file (SQLDUMPnnnn.txt) is created in the SQL ServerSQL Server LOG directory whenever DBCC CHECKALLOC detects a corruption error. Si la recopilación de datos de uso de características y la creación informes de errores están habilitadas para la instancia de SQL ServerSQL Server, el archivo se reenvía automáticamente a MicrosoftMicrosoft.When the Feature Usage data collection and Error Reporting features are enabled for the instance of SQL ServerSQL Server, the file is automatically forwarded to MicrosoftMicrosoft. Los datos recopilados se utilizan para mejorar la funcionalidad de SQL ServerSQL Server.The collected data is used to improve SQL ServerSQL Server functionality. El archivo de volcado contiene los resultados del comando DBCC CHECKALLOC y salida de diagnóstico adicional.The dump file contains the results of the DBCC CHECKALLOC command and additional diagnostic output. El archivo tiene listas de control de acceso discrecional (DACL) restringidas.The file has restricted discretionary access-control lists (DACLs). El acceso está limitado a la cuenta de servicio de SQL ServerSQL Server y a los miembros del rol sysadmin.Access is limited to the SQL ServerSQL Server service account and members of the sysadmin role. De forma predeterminada, el rol sysadmin contiene todos los miembros del grupo BUILTIN\Administradores de Windows y el grupo de administradores local.By default, the sysadmin role contains all members of the Windows BUILTIN\Administrators group and the local administrator's group. El comando DBCC no producirá error en caso de que se produzca un error en el proceso de recopilación de datos.The DBCC command does not fail if the data collection process fails.

Resolver erroresResolving Errors

Si DBCC CHECKALLOC informa de algún error, se recomienda restaurar la base de datos a partir de su copia de seguridad en lugar de ejecutar una reparación.If DBCC CHECKALLOC reports any errors, we recommend that you restore the database from the database backup instead of running a repair. Si no existe una copia de seguridad, la ejecución de una reparación puede corregir los errores; no obstante, puede exigir la eliminación de algunas páginas y, por lo tanto, de datos.If a backup does not exist, running a repair can correct the reported errors; however, correcting the errors might require some pages, and therefore data, to be deleted. Es posible realizar una reparación en una transacción de usuario.A repair can be performed in a user transaction. Esto permite revertir los cambios.This allows for changes to be rolled back. Si se revierten los cambios, la base de datos seguirá conteniendo errores y deberá ser restaurada a partir de una copia de seguridad.If changes are rolled back, the database will still contain errors and must be restored from a backup. Una vez finalizadas las reparaciones, realice una copia de seguridad de la base de datos.After the repairs finish, back up the database.

Conjuntos de resultadosResult Sets

En las siguientes tablas se describe la información que devuelve DBCC CHECKALLOC.The following tables describe the information that DBCC CHECKALLOC returns.

ElementoItem DescripciónDescription
FirstIAMFirstIAM Exclusivamente para uso interno.Internal use only.
RootRoot Exclusivamente para uso interno.Internal use only.
DpagesDpages Recuento de páginas de datos.Data page count.
Pages usedPages used Páginas asignadas.Allocated pages.
Dedicated extentsDedicated extents Extensiones asignadas al objeto.Extents allocated to the object.

Si se utilizan páginas de asignación mixtas, puede haber páginas asignadas sin extensiones.If mixed allocation pages are used, there might be pages allocated without extents.

DBCC CHECKALLOC también devuelve un resumen de asignación de cada índice y partición de los archivos.DBCC CHECKALLOC also reports an allocation summary for each index and partition in each file. En este resumen se describe la distribución de los datos.This summary describes the distribution of the data.

ElementoItem DescripciónDescription
Reserved pagesReserved pages Páginas asignadas al índice y páginas no utilizadas en extensiones asignadas.Pages allocated to the index and the unused pages in allocated extents.
Used pagesUsed pages Páginas asignadas y utilizadas por el índice.Pages allocated and being used by the index.
Id. de particiónPartition ID Exclusivamente para uso interno.Internal use only.
Alloc Unit IDAlloc unit ID Exclusivamente para uso interno.Internal use only.
Datos de filaIn-row data Las páginas contienen datos de índice o de montón.Pages contain index or heap data.
Datos LOBLOB data Las páginas contienen datos de tipo varchar(max) , nvarchar(max) , varbinary(max) , text, ntext, xml e image.Pages contain varchar(max), nvarchar(max), varbinary(max), text, ntext, xml, and image data.
Datos de desbordamiento de filaRow-overflow data Las páginas contienen datos de columna de longitud variable que se han insertado de manera no consecutiva.Pages contain variable-length column data that has been pushed off-row.

DBCC CHECKALLOC devuelve el siguiente conjunto de resultados (los valores pueden variar), excepto si se especifica ESTIMATEONLY o NO_INFOMSGS.DBCC CHECKALLOC returns the following result set (values may vary), except when ESTIMATEONLY or NO_INFOMSGS is specified.

DBCC results for 'master'.  
***************************************************************  
Table sysobjects                Object ID 1.  
Index ID 1         FirstIAM (1:11)   Root (1:12)    Dpages 22.  
    Index ID 1. 24 pages used in 5 dedicated extents.  
Index ID 2         FirstIAM (1:1368)   Root (1:1362)    Dpages 10.  
    Index ID 2. 12 pages used in 2 dedicated extents.  
Index ID 3         FirstIAM (1:1392)   Root (1:1408)    Dpages 4.  
    Index ID 3. 6 pages used in 0 dedicated extents.  
Total number of extents is 7.  
***************************************************************  
'...'  
***************************************************************  
Table spt_server_info                Object ID 1938105945.  
Index ID 1         FirstIAM (1:520)   Root (1:508)    Dpages 1.  
    Index ID 1. 3 pages used in 0 dedicated extents.  
Total number of extents is 0.  
***************************************************************  
Processed 52 entries in sysindexes for database ID 1.  
File 1. Number of extents = 210, used pages = 1126, reserved pages = 1280.  
           File 1 (number of mixed extents = 73, mixed pages = 184).  
    Object ID 1, Index ID 0, data extents 5, pages 24, mixed extent pages 9.  
'...'  
    Object ID 1938105945, Index ID 0, data extents 0, pages 3, mixed extent pages 3.  
Total number of extents = 210, used pages = 1126, reserved pages = 1280 in this database.  
       (number of mixed extents = 73, mixed pages = 184) in this database.  
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.  
DBCC results for 'master'.  
***************************************************************  
Table sys.sysrowsetcolumns                Object ID 4.  
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). FirstIAM (1:98). Root (1:94). Dpages 7.  
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). 9 pages used in 1 dedicated extents.  
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). FirstIAM (0:0). Root (0:0). Dpages 0.  
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). 0 pages used in 0 dedicated extents.  
Total number of extents is 1.  
...  
***************************************************************  
Processed 201 entries in system catalog for database ID 1.  
File 1. Number of extents = 44, used pages = 300, reserved pages = 345.  
           File 1 (number of mixed extents = 29, mixed pages = 225).  
    Object ID 4, index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data), data extents 1, pages 9, mixed extent pages 8.  
    Object ID 5, index ID 1, partition ID 327680, alloc unit ID 327680 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
    Object ID 7, index ID 1, partition ID 458752, alloc unit ID 458752 (type In-row data), data extents 0, pages 5, mixed extent pages 5.  
    Object ID 8, index ID 0, partition ID 524288, alloc unit ID 524288 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
    Object ID 13, index ID 1, partition ID 851968, alloc unit ID 851968 (type In-row data), data extents 1, pages 9, mixed extent pages 8.  
    Object ID 15, index ID 1, partition ID 983040, alloc unit ID 983040 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
    Object ID 26, index ID 1, partition ID 281474978414592, alloc unit ID 1703937 (type In-row data), data extents 0, pages 3, mixed extent pages 3.  
    Object ID 27, index ID 1, partition ID 281474978480128, alloc unit ID 1769473 (type In-row data), data extents 0, pages 3, mixed extent pages 3.  
    Object ID 27, index ID 2, partition ID 562949955190784, alloc unit ID 1769474 (type In-row data), index extents 0, pages 3, mixed extent pages 3.  
...  
    Object ID 1179151246, index ID 1, partition ID 72057594038845440, alloc unit ID 13435136 (type In-row data), data extents 2, pages 18, mixed extent pages 8.  
    Object ID 1179151246, index ID 2, partition ID 72057594038910976, alloc unit ID 13566208 (type In-row data), index extents 1, pages 16, mixed extent pages 8.  
    Object ID 1911677858, index ID 0, partition ID 72057594039631872, alloc unit ID 15073536 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
Total number of extents = 41, used pages = 289, reserved pages = 323 in this database.  
       (number of mixed extents = 27, mixed pages = 211) in this database.  
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.  
DBCC execution completed. If DBCC printed error messages, contact your system administrator.  

Cuando se especifica ESTIMATEONLY, DBCC CHECKALLOC devuelve el siguiente conjunto de resultados.When ESTIMATEONLY is specified, DBCC CHECKALLOC returns the following result set.

Estimated TEMPDB space needed for CHECKALLOC (KB)   
-------------------------------------------------   
34  
  
(1 row(s) affected)  
  
DBCC execution completed. If DBCC printed error messages, contact your system administrator.  

PermisosPermissions

Debe pertenecer al rol fijo de servidor sysadmin o al rol fijo de base de datos db_owner.Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

EjemplosExamples

En el ejemplo siguiente se ejecuta DBCC CHECKALLOC para la base de datos actual y para la base de datos AdventureWorks2012.The following example executes DBCC CHECKALLOC for the current database and for the AdventureWorks2012 database.

-- Check the current database.  
DBCC CHECKALLOC;  
GO  
-- Check the AdventureWorks2012 database.  
DBCC CHECKALLOC (AdventureWorks2012);  
GO  

Consulte tambiénSee Also

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