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.
Se aplica a: SQL Server (desde SQL Server 2008 hasta la versión 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 ]
}
]
]
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 se deben realizar comprobaciones intensivas de índices no clúster 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 informativos.TABLOCK
Hace que DBCC CHECKFILEGROUP obtenga bloqueos en lugar de utilizar una instantánea de base de datos interna.ESTIMATE ONLY
Muestra la cantidad estimada de espacio necesario en la base de datos 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.
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.
Comentarios
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:
DBCC CHECKALLOC del grupo de archivos.
DBCC CHECKTABLE de cada tabla y cada vista indizada del grupo de archivos.
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 Ver el tamaño del archivo disperso de una instantánea de base de datos (Transact-SQL) 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 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.Esto significa que no es posible 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 Establecer la opción de configuración del servidor Grado máximo de paralelismo.
La comprobación del paralelismo se puede deshabilitar utilizando el marcador de seguimiento 2528. Para obtener más información, vea Marcas 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.
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
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 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
Un archivo de minivolcado (SQLDUMPnnnn.txt) se crea en el directorio LOG de SQL Server siempre que DBCC CHECKFILEGROUP detecta un error relacionado con daños en los datos. 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 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á un 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 al rol fijo de servidor sysadmin o al rol fijo de base de datos db_owner.
Ejemplos
A.Comprobar el grupo de archivos principal (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.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 AdventureWorks2012 (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 AdventureWorks2012;
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
sp_helpfilegroup (Transact-SQL)
sys.sysfilegroups (Transact-SQL)