Partilhar via


DBCC CHECKCATALOG (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Verifica a consistência do catálogo dentro do banco de dados especificado. O banco de dados deve estar online.

Convenções de sintaxe Transact-SQL

Sintaxe

DBCC CHECKCATALOG
[
    (
    database_name | database_id | 0
    )
]
    [ WITH NO_INFOMSGS ]

Observação

Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

database_name | database_id | 0

É o nome ou a ID do banco de dados que contém o catálogo que terá a consistência verificada. Se não for especificado ou se 0 for especificado, o banco de dados atual será usado. Os nomes de banco de dados precisam estar em conformidade com as regras de identificadores.

WITH NO_INFOMSGS

Suprime todas as mensagens informativas.

Comentários

Depois que o comando DBCC CHECKCATALOG é concluído, uma mensagem é gravada no log de erros do SQL Server. Se o comando DBCC for executado com êxito, a mensagem indicará uma conclusão bem-sucedida e o tempo de execução do comando. Se o comando DBCC parar antes de concluir a verificação devido a um erro, a mensagem indicará que o comando foi finalizado, um valor de estado e a duração da execução do comando. A tabela a seguir lista e descreve os valores de estado que podem ser incluídos na mensagem.

Estado Descrição
0 O número do erro 8930 foi gerado. Isso indica um dano de metadados que provocou a finalização do comando DBCC.
1 O erro número 8967 foi gerado. Ocorreu um erro interno de DBCC.
2 Ocorreu uma falha durante o reparo do banco de dados em modo de emergência.
3 Isso indica um dano de metadados que provocou a finalização do comando DBCC.
4 Uma declaração ou violação de acesso foi detectada.
5 Ocorreu um erro desconhecido que finalizou o comando DBCC.

DBCC CHECKCATALOG executa vários testes de consistência entre tabelas de metadados do sistema. DBCC CHECKCATALOG usa um instantâneo de banco de dados interno para fornecer a consistência transacional necessária ao executar essas verificações. Para saber mais, confira Exibir o tamanho do arquivo esparso de um instantâneo de banco de dados (Transact-SQL) e a seção Uso do instantâneo de banco de dados interno do DBCC em DBCC (Transact-SQL).

Se não for possível criar um instantâneo, DBCC CHECKCATALOG obterá um bloqueio de banco de dados exclusivo para adquirir a consistência necessária. Se qualquer inconsistência for detectada, ela não poderá ser reparada e o banco de dados deverá ser restaurado com base em um backup.

Observação

A execução de DBCC CHECKCATALOG em tempdb não realiza nenhuma verificação. Isso porque, devido a motivos de desempenho, os instantâneos de banco de dados não estão disponíveis em tempdb. Isso significa que não é possível obter a consistência transacional exigida. Reinicie o serviço do Mecanismo de Banco de Dados para resolver quaisquer problemas de metadados de tempdb.

Observação

DBCC CHECKCATALOG não verifica dados FILESTREAM. FILESTREAM armazena BLOBS (objetos binários grandes) no sistema de arquivos.

DBCC CHECKCATALOG também é executado como parte de DBCC CHECKDB.

Conjuntos de resultados

Se nenhum banco de dados for especificado, DBCC CHECKCATALOG retornará o seguinte:

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

Se AdventureWorks2022 for especificado como o nome do banco de dados, DBCC CHECKCATALOG retornará o seguinte:

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

Permissões

Requer a associação à função de servidor fixa sysadmin ou à função de banco de dados fixa db_owner.

Exemplos

O exemplo a seguir verifica a integridade do catálogo no banco de dados atual e no banco de dados AdventureWorks2022.

-- Check the current database.
DBCC CHECKCATALOG;
GO
-- Check the AdventureWorks database.
DBCC CHECKCATALOG (AdventureWorks2022);
GO

Confira também