Compartir a través de


DBCC CHECKFILEGROUP (Transact-SQL)

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_name | 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_name no puede ser un grupo de archivos FILESTREAM.

  • 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 deben realizarse comprobaciones intensivas de índices no clúster en 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 mismas.

  • ALL_ERRORMSGS
    Muestra un número ilimitado de errores por objeto. En SQL Server 2008 Service Pack 1 (SP1), 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 (excepto SQL Server 2005 SP3), solo se muestran los primeros 200 mensajes de error de cada objeto si no se especifica ALL_ERRORMSGS.

  • NO_INFOMSGS
    Suprime todos los mensajes informativos.

  • TABLOCK
    Hace que DBCC CHECKFILEGROUP obtenga bloqueos en lugar de utilizar una instantánea de la base de datos interna.

  • ESTIMATEONLY
    Muestra la cantidad de espacio para la base de datos tempdb que se considera que es 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 la 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. Una 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 nuevas características.

    Por tanto, el uso de la opción PHYSICAL_ONLY puede llevar mucho menos tiempo para DBCC CHECKFILEGROUP en grupos de archivos grandes y, por ello, se recomienda si se usa frecuentemente en sistemas de producción. Aun así, se recomienda realizar periódicamente una ejecución completa de 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]

    Si se especifica PHYSICAL_ONLY, DBCC CHECKFILEGROUP omite todas las comprobaciones de datos de FILESTREAM.

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 la 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 la 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 requiere un bloqueo exclusivo de base de datos para realizar las comprobaciones de asignación y se requieren bloqueos compartidos de tabla para realizar las comprobaciones de tabla. TABLOCK hace que DBCC CHECKFILEGROUP se ejecute con más rapidez en una base de datos con mucha carga, pero reduce la simultaneidad disponible en la base de datos mientras se ejecuta DBCC CHECKFILEGROUP.

[!NOTA]

La ejecución de DBCC CHECKFILEGROUP en tempdb no realiza ninguna comprobación de asignación y debe adquirir bloqueos compartidos de tablas para realizar las comprobaciones de tablas. Esto es debido a que por motivos de rendimiento las instantáneas de base 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 del paralelismo se puede deshabilitar utilizando el marcador de seguimiento 2528. Para obtener más información, vea Marcadores de seguimiento (Transact-SQL).

Índices no clúster en grupos de archivos independientes

Si un índice no clúster 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 no clúster y la tabla base del otro grupo de archivos. Para comprobar los índices no clúster y las tablas base, ejecute DBCC CHECKDB.

Si una tabla del grupo de archivos especificado tiene un índice no clúster 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 no clúster. Los índices no clúster no tienen que ser examinados para validar la tabla base.

  • El comando DBCC CHECKFILEGROUP solo valida los objetos del grupo de archivos especificado.

Un índice clúster y una tabla no pueden estar en grupos de archivos diferentes; por lo tanto, las consideraciones anteriores solo se aplican a los índices no clúster.

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 solo 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 el Service Pack 2 y versiones posteriores, cuando una tabla con particiones existe 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 no clúster 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 completarse 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

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 de 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.

El archivo de volcado contiene los resultados del comando DBCC CHECKFILEGROUP y la 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\Administradores 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.

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.

Permisos

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

Ejemplos

A. Comprobar el grupo de archivos principal (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 principal (PRIMARY) de AdventureWorks sin índices no clúster

En este ejemplo, se comprueba el grupo de archivos principal de la base de datos AdventureWorks (excluidos los índices no clúster); 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;

Historial de cambios

Contenido actualizado

En la definición de ALL_ERRORMSGS se ha descrito la funcionalidad nueva de SQL Server 2008 SP1.

Agregada la cláusula PHYSICAL_ONLY a las secciones Sintaxis y Argumentos.