DBCC CHECKCATALOG(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스Azure SQL Managed Instance
지정한 데이터베이스 내의 카탈로그 일관성을 검사합니다. 데이터베이스는 온라인 상태여야 합니다.
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 CHECKCATALOG
는 DBCC 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