Compartir a través de


DBCC CHECKALLOC (Transact-SQL)

Actualizado: 17 de noviembre de 2008

Comprueba la coherencia de las estructuras de asignación de espacio en disco de una base de datos determinada.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • database_name | database_id | 0
    Es el nombre o el identificador de la base de datos cuya asignación y uso de espacio se va a comprobar. Si no se especifica o se especifica 0, se utiliza la base de datos actual.

    Los nombres de las bases de datos deben cumplir las reglas de los identificadores.

  • NOINDEX
    Especifica que no se deben comprobar los índices sin agrupar de las tablas de usuario.

    [!NOTA] NOINDEX sólo se mantiene por compatibilidad con versiones anteriores y no afecta a DBCC CHECKALLOC.

  • REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
    Especifica que DBCC CHECKALLOC repara los errores encontrados. database_name debe estar en modo de un único usuario.

    • REPAIR_ALLOW_DATA_LOSS
      Intenta reparar los errores encontrados. Estas reparaciones pueden ocasionar alguna pérdida de datos. REPAIR_ALLOW_DATA_LOSS es la única opción que permite la reparación de los errores de asignación.
    • REPAIR_FAST
      La sintaxis sólo se mantiene por razones de compatibilidad con versiones anteriores. No se realizan acciones de reparación.
    • REPAIR_REBUILD
      No aplicable.
    ms188422.note(es-es,SQL.90).gifImportante:
    Utilice las opciones REPAIR sólo como último recurso. Para reparar errores, se recomienda restaurar a partir de una copia de seguridad. Las operaciones de reparación no tienen en cuenta ninguna de las restricciones que puede haber en las tablas o entre ellas. Si la tabla especificada está implicada en una o más restricciones, se recomienda ejecutar DBCC CHECKCONSTRAINTS tras una operación de reparación. 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. 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.
  • WITH
    Permite especificar opciones.
  • ALL_ERRORMSGS
    Muestra todos los mensajes de error. En SQL Server 2005 Service Pack 3 (SP3), se muestran todos los mensajes de error de forma predeterminada. Especificar u omitir esta opción no tiene ningún efecto. En las versiones anteriores de SQL Server, si no se especifica ALL_ERRORMSGS, sólo se muestran los primeros 200 mensajes de error de cada objeto.
  • NO_INFOMSGS
    Suprime todos los mensajes informativos y el informe del espacio utilizado.
  • TABLOCK
    Hace que el comando DBCC obtenga un bloqueo de base de datos exclusivo.
  • ESTIMATE ONLY
    Muestra la cantidad calculada de espacio de tempdb que se necesita para ejecutar DBCC CHECKALLOC cuando todas las otras opciones están especificadas.

Conjuntos de resultados

En las siguientes tablas se describe la información que devuelve DBCC CHECKALLOC.

Elemento Descripción

FirstIAM

Exclusivamente para uso interno.

Root

Exclusivamente para uso interno.

Dpages

Recuento de páginas de datos.

Pages used

Páginas asignadas.

Dedicated extents

Extensiones asignadas al objeto.

Si se utilizan páginas de asignación mixtas, puede haber páginas asignadas sin extensiones.

DBCC CHECKALLOC también devuelve un resumen de asignación de cada índice y partición de los archivos. En este resumen se describe la distribución de los datos.

Elemento Descripción

Reserved pages

Páginas asignadas al índice y páginas no utilizadas en extensiones asignadas.

Used pages

Páginas asignadas y utilizadas por el índice.

Partition ID

Exclusivamente para uso interno.

Alloc Unit ID

Exclusivamente para uso interno.

In-row data

Las páginas contienen datos de índice o de montón.

LOB data

Las páginas contienen datos de varchar(max), nvarchar(max), varbinary(max), text, ntext, xml y image.

Row-overflow data

Las páginas contienen datos de columna de longitud variable que se han insertado de manera no consecutiva.

DBCC CHECKALLOC devuelve el siguiente conjunto de resultados (los valores pueden variar), excepto si se especifica ESTIMATEONLY o NO_INFOMSGS.

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.

Estimated TEMPDB space needed for CHECKALLOC (KB) 
------------------------------------------------- 
34

(1 row(s) affected)

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Notas

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. También valida las diversas estructuras internas que se utilizan para realizar un seguimiento de estas páginas y de las relaciones entre ellas.

Si no se especifica NO_INFOMSGS, DBCC CHECKALLOC recopila información sobre uso de espacio de todos los objetos de la base de datos. Esta información se imprimirá junto con los errores encontrados.

[!NOTA] La funcionalidad DBCC CHECKALLOC se incluye en DBCC CHECKDB y DBCC CHECKFILEGROUP. Esto significa que no tiene que ejecutar DBCC CHECKALLOC independientemente de estas instrucciones.

Instantánea de base de datos interna

DBCC CHECKALLOC utiliza una instantánea interna de base de datos para proporcionar la coherencia transaccional necesaria para realizar estas comprobaciones. 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. Para obtener más información acerca de los bloqueos, vea Modos de bloqueo.

[!NOTA] En SQL Server 2005, al ejecutar DBCC CHECKALLOC con tempdb, no se realiza ninguna comprobación. Esto es debido a que, por motivos de rendimiento, las instantáneas de base de datos no están disponibles en tempdb. Eso significa que no es posible obtener la coherencia transaccional necesaria. Detenga e inicie el servicio MSSQLSERVER para resolver cualquier problema de asignación de tempdb que pueda existir. Esta acción quita la base de datos tempdb y vuelve a crearla.

Descripción de los mensajes de error de DBCC

Cuando finaliza el comando DBCC CHECKALLOC, se escribe un mensaje en el registro de errores de SQL Server. Si el comando DBCC se ejecuta correctamente, el mensaje lo indica, así como el tiempo de ejecución del comando. 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 mismo. En la tabla siguiente se muestran y describen los valores de estado que pueden aparecer en el mensaje.

Estado Descripción

0

Se ha generado el error número 8930. Indica un daño en los metadatos que provoca la cancelación del comando DBCC.

1

Se ha generado el error número 8967. Error DBCC interno.

2

Error durante una reparación de base de datos en modo de emergencia.

3

Indica un daño en los metadatos que provoca la cancelación del comando DBCC.

4

Se ha detectado una infracción de acceso o aserción.

5

Error desconocido que cancela el comando DBCC.

Informes de errores

En SQL Server 2005 Service Pack 1 (SP1), se crea un archivo de minivolcado (SQLDUMPnnnn.txt) en el directorio LOG de SQL Server siempre que DBCC CHECKALLOC detecta un error relacionado con datos dañados. 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 Server, el archivo se reenvía automáticamente a Microsoft. Los datos recopilados se utilizan para mejorar la funcionalidad de SQL Server. Para obtener más información, vea Configuración de informes de errores y uso.

El archivo de volcado contiene los resultados del comando DBCC CHECKALLOC y salida de diagnóstico adicional. El archivo tiene listas de control de acceso discrecional (DACL) restringidas. El acceso está limitado a la cuenta de servicio de SQL Server y a los miembros de la función sysadmin. De forma predeterminada, la función sysadmin contiene todos los miembros del grupo BUILTIN\Administrators de Windows y el grupo de administradores local. El comando DBCC no producirá error en caso de que se produzca un error en el proceso de recopilación de datos.

Resolver errores

Si DBCC CHECKALLOC notifica algún error, se recomienda restaurar la base de datos a partir de su copia de seguridad en lugar de ejecutar una reparación. 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.

Es posible realizar una reparación en una transacción de usuario. Esto permite revertir los cambios. Si se revierten los cambios, la base de datos seguirá conteniendo errores y deberá ser restaurada a partir de una copia de seguridad. Una vez finalizadas las reparaciones, realice una copia de seguridad de la base de datos.

Permisos

Debe pertenecer a la función fija de servidor sysadmin o a la función fija de base de datos db_owner.

Ejemplos

En el siguiente ejemplo se ejecuta DBCC CHECKALLOC para la base de datos actual y la base de datos AdventureWorks.

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

Vea también

Referencia

DBCC (Transact-SQL)

Otros recursos

Organización de tablas e índices
Administrar el espacio utilizado por los objetos

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

17 de noviembre de 2008

Contenido nuevo:
  • En la definición de ALL_ERRORMSGS se describió la funcionalidad nueva de SP3.

14 de abril de 2006

Contenido nuevo:
  • Se agregó la subsección "Informes de errores" a la sección Notas. En esta sección se describe la nueva funcionalidad relacionada con el SP1.

5 de diciembre de 2005

Contenido modificado:
  • Se corrigió la sintaxis.
  • Se agregó xml a la lista de tipos de datos en "Datos LOB".
  • Se corrigió la definición de REPAIR_FAST. La opción no lleva a cabo acciones de reparación.
  • Se ha agregado a la sección Notas información sobre mensajes escritos en el registro de errores de SQL Server y descripciones de los valores de estado.