DBCC CHECKFILEGROUP (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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.

Convenciones de sintaxis de Transact-SQL

Sintaxis

DBCC CHECKFILEGROUP
[
    [ ( { filegroup_name | filegroup_id | 0 }
        [ , NOINDEX ]
  ) ]
    [ WITH
        {
            [ ALL_ERRORMSGS | NO_INFOMSGS ]
            [ , TABLOCK ]
            [ , ESTIMATEONLY ]
            [ , PHYSICAL_ONLY ]
            [ , MAXDOP  = number_of_processors ]
        }
    ]
]

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

filegroup_name

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 reglas de los identificadores.
filegroup_name no puede ser un grupo de archivos FILESTREAM.

filegroup_id

El número de identificación (id.) 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 no agrupado 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. De forma predeterminada, se muestran todos los mensajes de error. Especificar u omitir esta opción no tiene ningún efecto.

NO_INFOMSGS

Suprime todos los mensajes de información.

TABLOCK

Hace que DBCC CHECKFILEGROUP obtenga bloqueos en lugar de usar una instantánea de base de datos interna.

ESTIMATE ONLY

Muestra la cantidad estimada de espacio necesario en tempdb 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.

Nota

La documentación de SQL Server utiliza el término árbol B generalmente en referencia a los índices. En los índices del almacén de filas, SQL Server implementa un árbol B+. Esto no se aplica a los índices de almacén de columnas ni a los almacenes de datos en memoria. Para obtener más información, consulte la guía de diseño y arquitectura de índices de SQL Server y Azure SQL.

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 para su uso frecuente en sistemas de producción. Aun así, se recomienda realizar una ejecución completa de DBCC CHECKFILEGROUP periódicamente. 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

La especificación de PHYSICAL_ONLY provoca que DBCC CHECKFILEGROUP omita todas las comprobaciones de los datos FILESTREAM.

MAXDOP

Se aplica a: SQL Server 2014 Service Pack 2 y versiones posteriores

Invalida la opción de configuración de grado máximo de paralelismo de sp_configure para la instrucción. MAXDOPpuede superar el valor configurado con sp_configure. Si MAXDOP supera el valor configurado con Resource Governor, el motor de base de datos usa el valor MAXDOP de Resource Governor, descrito en ALTER WORKLOAD GROUP (Transact-SQL). Se pueden aplicar todas las reglas semánticas usadas con la opción de configuración Grado máximo de paralelismo cuando se usa la sugerencia de consulta MAXDOP. Para obtener más información, vea Establecer la opción de configuración del servidor Grado máximo de paralelismo.

Precaución

Si MAXDOP se establece en cero, el servidor elige el grado máximo de paralelismo.

Comentarios

DBCC CHECKFILEGROUP y DBCC CHECKDB son comandos DBCC parecidos. 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 y DBCC CHECKFILEGROUP por separado.

Instantánea de base de datos interna

DBCC CHECKFILEGROUP usa una instantánea de base de datos interna para proporcionar la coherencia transaccional que debe tener para realizar estas comprobaciones. Para más información, consulte Ver el tamaño del archivo disperso de una instantánea de base de datos (Transact-SQL) y la sección Uso de comandos DBCC en instantáneas internas de la base de datos de 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 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á en ejecución.

Nota

Al ejecutar DBCC CHECKFILEGROUP en tempdb no se realiza ninguna comprobación de asignación y se deben adquirir bloqueos de tabla compartidos 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. Eso significa que no es posible obtener la coherencia transaccional necesaria.

Comprobación de 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 Establecer la opción de configuración del servidor Grado máximo de paralelismo.

La comprobación del paralelismo se puede deshabilitar con el marcador de seguimiento 2528. Para obtener más información, vea Marcas de seguimiento (Transact-SQL).

Índices no agrupados en grupos de archivos independientes

Si un índice no agrupado 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.

Si una tabla del grupo de archivos especificado tiene un índice no agrupado en otro grupo de archivos, dicho índice no se comprueba por las razones siguientes:

  • La estructura de la tabla base no depende de la estructura de un índice no agrupado. Los índices no agrupados 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 agrupado 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

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 agrupados que no residan en el grupo de archivos especificado no se comprueban.

Descripción de los mensajes de error de DBCC

Cuando el comando DBCC CHECKFILEGROUP finaliza, 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.

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

Informe de errores

Un archivo de minivolcado de memoria (SQLDUMP<nnnn>.txt) se crea en el directorio LOG de SQL Server cada vez que DBCC CHECKFILEGROUP detecta un error relacionado con datos dañados. Si las características de recopilación de datos de Uso de la característica e 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 los resultados del 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 del rol sysadmin. De forma predeterminada, el rol 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.

Resolución de errores

Si DBCC CHECKFILEGROUP indica algún error, se recomienda restaurar la base de datos a partir de la copia de seguridad. Las opciones de reparación no se pueden especificar en 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 ESTIMATEONLY o NO_INFOMSGS se especifican.
  • 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 NO_INFOMSGS se especifica, DBCC CHECKFILEGROUP devuelve lo siguiente:

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

Si ESTIMATEONLY se especifica, DBCC CHECKFILEGROUP devuelve lo siguiente (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 al rol fijo de servidor sysadmin o al rol fijo de base de datos db_owner .

Ejemplos

A. Comprobación del grupo de archivos PRIMARY en la base de datos

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

DBCC CHECKFILEGROUP;
GO

B. Comprobación del grupo de archivos PRIMARY de AdventureWorks sin índices no agrupados

En el ejemplo siguiente, se comprueba el grupo de archivos principal de la base de datos AdventureWorks2022 (excluidos los índices no agrupados). Para ello, se especifica el número de identificación del grupo de archivos principal y la opción NOINDEX.

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

C. Comprobación del grupo de archivos 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;

Consulte también