DBCC CHECKCATALOG (Transact-SQL)
檢查指定資料庫內的目錄一致性。資料庫必須在線上。
語法
DBCC CHECKCATALOG
[
(
database_name | database_id | 0
)
]
[ WITH NO_INFOMSGS ]
引數
database_name | database_id | 0
這是要檢查目錄一致性的資料庫名稱或識別碼。若未指定,或指定 0,就會使用目前的資料庫。資料庫名稱必須符合識別碼的規則。WITH NO_INFOMSGS
抑制所有參考訊息。
備註
DBCC CATALOG 命令執行完成之後,SQL Server 錯誤記錄檔中會寫入一則訊息。如果 DBCC 命令執行成功,該訊息將指出命令已順利完成,並顯示命令執行的時間量。如果 DBCC 命令由於發生錯誤而在完成檢查之前停止執行,則訊息中會指出命令已經終止,並顯示狀態值以及命令執行的時間量。下表列出並描述可以包含在訊息中的狀態值。
狀態 |
描述 |
---|---|
0 |
已引發錯誤號碼 8930。這表示中繼資料損毀使 DBCC 命令終止。 |
1 |
已引發錯誤號碼 8967。發生內部 DBCC 錯誤。 |
2 |
修復緊急模式資料庫期間發生失敗。 |
3 |
這表示中繼資料損毀使 DBCC 命令終止。 |
4 |
偵測到判斷提示或存取違規。 |
5 |
發生使 DBCC 命令終止的未知錯誤。 |
DBCC CHECKCATALOG 會在系統中繼資料表之間,執行各種一致性檢查。DBCC CHECKCATALOG 利用內部資料庫快照集來提供執行這些檢查所需要的交易一致性。如需詳細資訊,請參閱<了解資料庫快照集內的疏鬆檔案大小>和<DBCC (Transact-SQL)>中的「DBCC 內部資料庫快照集使用方式」一節。
如果無法建立快照集,DBCC CHECKCATALOG 會獲取獨佔資料庫鎖定來取得必要的一致性。如果偵測到任何不一致的情況,它們無法修復,您必須從備份中還原資料庫。
[!附註]
針對 tempdb 執行 DBCC CHECKCATALOG 並不會執行任何檢查。這是因為基於效能的考量,tempdb 並無法使用資料庫快照集。這表示無法取得必要的交易一致性。請回收伺服器來解決任何 tempdb 中繼資料問題。
[!附註]
DBCC CHECKCATALOG 不會檢查 FILESTREAM 資料。FILESTREAM 會將二進位大型物件 (BLOB) 儲存在檔案系統上。
DBCC CHECKCATALOG 也是作為 DBCC CHECKDB 的一部分來執行。
結果集
如果未指定任何資料庫,DBCC CHECKCATALOG 會傳回:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
如果將 AdventureWorks 指定為資料庫名稱,則 DBCC CHECKCATALOG 會傳回:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
權限
需要系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色中的成員資格。
範例
下列範例會檢查目前資料庫和 AdventureWorks 資料庫中的目錄完整性。
-- Check the current database.
DBCC CHECKCATALOG;
GO
-- Check the AdventureWorks database.
DBCC CHECKCATALOG (AdventureWorks);
GO