다음을 통해 공유


DBCC CHECKCATALOG(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스Azure SQL Managed Instance

지정한 데이터베이스 내의 카탈로그 일관성을 검사합니다. 데이터베이스는 온라인 상태여야 합니다.

Transact-SQL 구문 표기 규칙

Syntax

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

참고

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

인수

database_name | database_id | 0

카탈로그 일관성을 검사할 데이터베이스의 이름 또는 ID입니다. 아무 값도 지정하지 않거나 0을 지정하면 현재 데이터베이스가 사용됩니다. 데이터베이스 이름은 식별자에 대한 규칙을 준수해야 합니다.

WITH NO_INFOMSGS

모든 정보 메시지를 표시하지 않습니다.

설명

DBCC CHECKCATALOG 명령이 완료되면 SQL Server 오류 로그에 메시지가 기록됩니다. DBCC 명령이 성공적으로 실행되면 메시지에 실행 완료 및 명령이 실행된 소요 시간이 표시됩니다. 오류로 인해 DBCC 명령이 검사를 완료하기 전에 중지되면 메시지에 명령 종료, 상태 값 및 명령이 실행된 소요 시간이 표시됩니다. 다음 표에서는 메시지에 포함될 수 있는 상태 값을 나열하고 설명합니다.

시스템 상태 설명
0 오류 번호 8930이 발생했습니다. 메타데이터가 손상되어 DBCC 명령이 종료되었음을 나타냅니다.
1 오류 번호 8967이 발생했습니다. 내부 DBCC 오류가 있습니다.
2 응급 모드 데이터베이스 복구 중에 오류가 발생했습니다.
3 메타데이터가 손상되어 DBCC 명령이 종료되었음을 나타냅니다.
4 어설션 또는 액세스 위반이 감지되었습니다.
5 알 수 없는 오류가 발생하여 DBCC 명령이 종료되었습니다.

DBCC CHECKCATALOG는 시스템 메타데이터 테이블 간에 다양한 일관성 검사를 수행합니다. DBCC CHECKCATALOG는 내부 데이터베이스 스냅샷을 사용하여 이러한 검사를 수행하는 데 필요한 트랜잭션 일관성을 지원합니다. 자세한 내용은 데이터베이스 스냅샷의 스파스 파일의 크기 보기(Transact-SQL)DBCC(Transact-SQL)DBCC 내부 데이터베이스 스냅샷 사용 섹션을 참조하세요.

스냅샷을 만들 수 없는 경우 DBCC CHECKCATALOG는 필요한 일관성을 얻기 위해 배타적 데이터베이스 잠금을 획득합니다. 불일치가 감지되는 경우 복구가 불가능하며 데이터베이스를 백업에서 복원해야 합니다.

참고

tempdb에 대해 DBCC CHECKCATALOG를 실행하면 아무런 검사도 수행되지 않습니다. 이것은 성능상 이유로 tempdb의 데이터베이스 스냅샷을 사용할 수 없기 때문입니다. 즉, 필요한 트랜잭션 일관성을 얻을 수 없음을 의미합니다. 데이터베이스 엔진 서비스를 다시 시작하여 tempdb 메타데이터 문제를 해결합니다.

참고

DBCC CHECKCATALOG는 FILESTREAM 데이터를 검사하지 않습니다. FILESTREAM은 파일 시스템에 BLOB(Binary Large Object)을 저장합니다.

DBCC CHECKCATALOGDBCC CHECKDB의 일부로 실행되기도 합니다.

결과 집합

데이터베이스가 지정되지 않은 경우 DBCC CHECKCATALOG는 다음을 반환합니다.

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

AdventureWorks2022가 데이터베이스 이름으로 지정되면 DBCC CHECKCATALOG는 다음을 반환합니다.

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

사용 권한

sysadmin 고정 서버 역할의 멤버 또는 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.

다음 예에서는 현재 데이터베이스와 AdventureWorks2022 데이터베이스 모두의 카탈로그 무결성을 검사합니다.

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

추가 정보