DBCC CHECKCATALOG (Transact-SQL)
Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
Comprueba la coherencia del catálogo en la base de datos especificada. La base de datos debe en línea.
Convenciones de sintaxis de Transact-SQL
Sintaxis
DBCC CHECKCATALOG
[
(
database_name | database_id | 0
)
]
[ WITH NO_INFOMSGS ]
Nota:
Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.
Argumentos
database_name | database_id | 0
El nombre o id. de la base de datos en la que se va a comprobar la coherencia del catálogo. 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.
WITH NO_INFOMSGS
Suprime todos los mensajes de información.
Observaciones
Cuando el comando DBCC CHECKCATALOG
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. |
DBCC CHECKCATALOG
realiza varias comprobaciones de coherencia entre las tablas de metadatos del sistema. DBCC CHECKCATALOG
usa una instantánea interna de base de datos para proporcionar la coherencia transaccional necesaria 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, DBCC CHECKCATALOG
adquiere un bloqueo de base de datos exclusivo para obtener la coherencia necesaria. Si se detecta cualquier incoherencia, no se podrá reparar y será necesario restaurar la base de datos a partir de una copia de seguridad.
Nota
Al ejecutar DBCC CHECKCATALOG
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. Reinicie el servicio Motor de base de datos para resolver los problemas de metadatos tempdb
.
Nota
DBCC CHECKCATALOG
no comprueba los datos FILESTREAM. FILESTREAM almacena los objetos binarios grandes (BLBS) en el sistema de archivos.
DBCC CHECKCATALOG
se ejecuta también como parte de DBCC CHECKDB.
Conjuntos de resultados
Si no se especifica ninguna base de datos, DBCC CHECKCATALOG
devuelve lo siguiente:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Si AdventureWorks2022
se especifica como el nombre de la base de datos, DBCC CHECKCATALOG
devuelve lo siguiente:
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
El ejemplo siguiente comprueba la integridad del catálogo tanto en la base de datos actual como en la base de datos AdventureWorks2022
.
-- Check the current database.
DBCC CHECKCATALOG;
GO
-- Check the AdventureWorks database.
DBCC CHECKCATALOG (AdventureWorks2022);
GO