DBCC CHECKFILEGROUP (Transact-SQL)

Actualizado: 17 de noviembre de 2008

Comprueba la asignación y la integridad estructural de todas las tablas y vistas indizadas del grupo de archivos especificado de la base de datos actual.

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

Sintaxis

DBCC CHECKFILEGROUP 
[
    [ ( { filegroup | filegroup_id | 0 } 
        [ , NOINDEX ] 
    ) ]
    [ WITH 
        { 
            [ ALL_ERRORMSGS | NO_INFOMSGS ] 
            [ , TABLOCK ] 
            [ , ESTIMATEONLY ]
            [ , PHYSICAL_ONLY ]  
        } 
    ]
]

Argumentos

  • filegroup_name
    Es el nombre del grupo de archivos de la base de datos actual para el que se debe comprobar la asignación de tablas y la integridad estructural. Si no se especifica o se especifica 0, el valor predeterminado es el grupo de archivos principal. Los nombres de los grupos de archivos deben cumplir las mismas reglas que los identificadores.
  • filegroup_id
    Es el número de identificación (identificador) del grupo de archivos de la base de datos actual para el que se debe comprobar la asignación de tablas y la integridad estructural.
  • NOINDEX
    Especifica que no se deben realizar comprobaciones intensivas de índices sin agrupar para las tablas de usuario. Esto reduce el tiempo total de ejecución. La opción NOINDEX no afecta a las tablas del sistema, ya que DBCC CHECKFILEGROUP siempre comprueba todos los índices de las tablas del sistema.
  • ALL_ERRORMSGS
    Muestra un número ilimitado de errores por objeto. 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 de información.
  • TABLOCK
    Hace que DBCC CHECKFILEGROUP obtenga bloqueos en lugar de utilizar una instantánea de base de datos interna.
  • ESTIMATE ONLY
    Muestra la cantidad de espacio para la base de datos tempdb que se prevé necesario para ejecutar DBCC CHECKFILEGROUP con todas las demás opciones especificadas.
  • PHYSICAL_ONLY
    Limita la comprobación de la integridad a la estructura física de la página, los encabezados de registro y la estructura física de árboles b. Se ha diseñado para proporcionar una pequeña comprobación de sobrecarga de la coherencia física del grupo de archivos; esta comprobación también puede detectar páginas rasgadas y errores de hardware comunes que pueden comprometer los datos. La ejecución completa de DBCC CHECKFILEGROUP puede tardar mucho más tiempo que en versiones anteriores. Este comportamiento se debe a las razones siguientes:

    • Las comprobaciones lógicas son más exhaustivas.
    • Algunas de las estructuras subyacentes que hay que comprobar son más complejas.
    • Se han agregado muchas comprobaciones nuevas para incluir las características nuevas.

    Por tanto, el uso de la opción PHYSICAL_ONLY puede llevar mucho menos tiempo para DBCC CHECKFILETABLE en grupos de archivos grandes y, por ello, se recomienda cuando se usa con frecuencia en sistemas de producción. Aun así, se recomienda realizar periódicamente una ejecución completa DBCC CHECKFILEGROUP. La frecuencia de estas ejecuciones depende de factores específicos de cada empresa y de los entornos de producción. PHYSICAL_ONLY siempre implica NO_INFOMSGS y no se permite con ninguna de las opciones de reparación.

    Nota: especificar PHYSICAL_ONLY hace que DBCC CHECKFILEGROUP omita todas las comprobaciones de los datos FILESTREAM.

Conjuntos de resultados

DBCC CHECKFILEGROUP devuelve el siguiente conjunto de resultados (los valores pueden variar):

  • Excepto cuando se especifica ESTIMATEONLY o NO_INFOMSGS.
  • Para la base de datos actual, si no se especifica ninguna base de datos, independientemente de si hay o no opciones especificadas (excepto NOINDEX).
DBCC results for 'master'.
DBCC results for 'sys.sysrowsetcolumns'.
There are 630 rows in 7 pages for object 'sys.sysrowsetcolumns'.
DBCC results for 'sys.sysrowsets'.
There are 97 rows in 1 pages for object 'sys.sysrowsets'.
DBCC results for 'sysallocunits'.
There are 195 rows in 3 pages for object 'sysallocunits'.

There are 2340 rows in 16 pages for object 'spt_values'.
DBCC results for 'MSreplication_options'.
There are 2 rows in 1 pages for object 'MSreplication_options'.
CHECKFILEGROUP found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Si se especifica NO_INFOMSGS, DBCC CHECKFILEGROUP devuelve:

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

Si se especifica ESTIMATEONLY, DBCC CHECKFILEGROUP devuelve (los valores pueden variar):

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

(1 row(s) affected)

Estimated TEMPDB space needed for CHECKTABLES (KB) 
-------------------------------------------------- 
207

(1 row(s) affected)

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

Notas

DBCC CHECKFILEGROUP y DBCC CHECKDB son comandos DBCC similares. La diferencia principal es que DBCC CHECKFILEGROUP se limita al grupo de archivos especificado y a las tablas necesarias.

DBCC CHECKFILEGROUP ejecuta los siguientes comandos:

No es necesario ejecutar DBCC CHECKALLOC o DBCC CHECKTABLE independientemente de DBCC CHECKFILEGROUP.

Instantánea de base de datos interna

DBCC CHECKFILEGROUP utiliza una instantánea de base de datos interna para proporcionar la coherencia transaccional que debe tener para realizar estas comprobaciones. Para obtener más información, vea Descripción del tamaño de los archivos dispersos en instantáneas de bases de datos y la sección sobre el uso de la instantánea de base de datos interna DBCC en DBCC (Transact-SQL).

Si no se puede crear una instantánea o se especifica la opción TABLOCK, DBCC CHECKFILEGROUP adquiere bloqueos para obtener la coherencia necesaria. En este caso, se necesita un bloqueo exclusivo de la base de datos para realizar las comprobaciones de asignación y bloqueos de tabla compartidos para realizar las comprobaciones de tablas. TABLOCK hace que DBCC CHECKFILEGROUP se ejecute más rápido en una base de datos con mucha carga, pero disminuye la simultaneidad disponible en la base de datos mientras DBCC CHECKFILEGROUP está ejecutándose.

[!NOTA] En SQL Server 2005, al ejecutar DBCC CHECKFILEGROUP con tempdb no se realiza ninguna comprobación de asignación y debe adquirir bloqueos de tabla compartidos para realizar comprobaciones de tablas. Esto se debe a que, por motivos de rendimiento, las instantáneas de bases de datos no están disponibles en tempdb. Esto significa que no se puede obtener la coherencia transaccional necesaria.

Comprobar objetos en paralelo

De forma predeterminada, DBCC CHECKFILEGROUP realiza comprobaciones paralelas de los objetos. El grado de paralelismo se determina automáticamente mediante el procesador de consultas. El grado máximo de paralelismo se configura igual que las consultas paralelas. Para restringir el número máximo de procesadores disponibles para las comprobaciones DBCC, use sp_configure. Para obtener más información, vea max degree of parallelism (opción).

La comprobación en paralelo puede deshabilitarse utilizando el indicador de traza 2528. Para obtener más información, vea Marcas de traza (Transact-SQL).

Índices sin agrupar en grupos de archivos independientes

Si un índice sin agrupar del grupo de archivos especificado está asociado a una tabla de otro grupo de archivos, no se comprueba el índice, ya que la tabla base no está disponible para la validación. Es un cambio de comportamiento de SQL Server 2005. En versiones anteriores de SQL Server se comprobaban el índice sin agrupar y la tabla base del otro grupo de archivos. Para comprobar los índices sin agrupar y las tablas base, ejecute DBCC CHECKDB.

Si una tabla del grupo de archivos especificado tiene un índice sin agrupar en otro grupo de archivos, dicho índice no se comprueba porque:

  • La estructura de la tabla base no depende de la estructura de un índice sin agrupar. Los índices sin agrupar no tienen que ser examinados para validar la tabla base.
  • El comando DBCC CHECKFILEGROUP sólo valida objetos del grupo de archivos especificado.

Un índice agrupado y una tabla no pueden estar en diferentes grupos de archivos; por lo tanto, las consideraciones anteriores sólo se aplican a los índices sin agrupar.

Tablas con particiones en grupos de archivos independientes

En las versiones de SQL Server 2005 anteriores al Service Pack 2 (SP2), DBCC CHECKFILEGROUP comprueba una tabla con particiones sólo si toda la tabla está en el grupo de archivos especificado. Si la tabla se divide en varios grupos de archivos, toda la tabla se pasa por alto. En SP2, cuando una tabla con particiones está en varios grupos de archivos, DBCC CHECKFILEGROUP comprueba los conjuntos de filas de las particiones que existen en el grupo de archivos especificado y omite los de los demás. El mensaje informativo 2594 indica las particiones que no se comprobaron. Los índices sin agrupar que no residan en el grupo de archivos especificado no se comprueban.

Descripción de los mensajes de error de DBCC

Cuando finaliza el comando DBCC CHECKFILEGROUP, 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 comando. 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 con el Service Pack 1 (SP1), se crea un archivo de minivolcado (SQLDUMPnnnn.txt) en el directorio LOG de SQL Server siempre que DBCC CHECKFILEGROUP 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 CHECKFILEGROUP y salida de diagnóstico adicional. El archivo tiene las 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 CHECKFILEGROUP indica algún error, se recomienda restaurar la base de datos a partir de la copia de seguridad. Tenga en cuenta que no se pueden especificar opciones de reparación para DBCC CHECKFILEGROUP.

Si no existe una copia de seguridad, es posible corregir los errores ejecutando DBCC CHECKDB con una opción de reparación especificada. La opción de reparación que se utilizará se especifica al final de la lista de errores. La corrección de errores con la opción REPAIR_ALLOW_DATA_LOSS puede ocasionar la eliminación de algunas páginas y, en consecuencia, 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

A. Comprobar el grupo de archivos PRIMARY de la base de datos AdventureWorks

En este ejemplo, se comprueba el grupo de archivos principal de la base de datos AdventureWorks.

USE AdventureWorks;
GO
DBCC CHECKFILEGROUP;
GO

B. Comprobar el grupo de archivos PRIMARY de AdventureWorks sin índices sin agrupar

En este ejemplo, se comprueba el grupo de archivos principal de la base de datos AdventureWorks (excluidos los índices sin agrupar); para ello, se especifica el número de identificación del grupo de archivos principal y la opción NOINDEX.

USE AdventureWorks;
GO
DBCC CHECKFILEGROUP (1, NOINDEX);
GO

C. Comprobar el grupo de archivos principal (PRIMARY) con opciones

En el ejemplo siguiente se comprueba el grupo de archivos principal de la base de datos master y se especifica la opción ESTIMATEONLY.

USE master;
GO
DBCC CHECKFILEGROUP (1)
WITH ESTIMATEONLY;

Vea también

Referencia

DBCC (Transact-SQL)
FILEGROUP_ID (Transact-SQL)
sp_helpfile (Transact-SQL)
sp_helpfilegroup (Transact-SQL)
sys.sysfilegroups (Transact-SQL)
DBCC CHECKDB (Transact-SQL)
DBCC CHECKALLOC (Transact-SQL)
DBCC CHECKTABLE (Transact-SQL)

Otros recursos

Arquitectura física de una base de datos

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.

12 de diciembre de 2006

Contenido nuevo:
  • En la sección Notas, se agregó la subsección "Tablas con particiones en grupos de archivos independientes". En esta sección se describe la nueva funcionalidad relacionada con el SP2.

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 nuevo:
  • Se agregó el ejemplo C.
Contenido modificado:
  • Se corrigió la sintaxis.
  • Se agregó 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.
  • Se corrigió la sección Notas para los índices sin agrupar en grupos de archivos independientes a fin reflejar el comportamiento de SQL Server 2005.