適用於:SQL Server
詳細資料
| 項目 | 值 |
|---|---|
| 產品名稱 | SQL 伺服器 |
| 事件識別碼 | 8992 |
| 事件來源 | MSSQLSERVER |
| 元件 | SQLEngine |
| 符號名稱 | DBCC3_CHECK_CATALOG |
| 訊息文字 | 檢查目錄訊息層級層級狀態:訊息。 |
注意
8992 錯誤訊息會參考另一個特定訊息(範圍從 3851 到 3858),以了解實際不一致的情況。
說明
DBCC CHECKCATALOG 或 DBCC CHECKDB 在指定之對象的系統元數據表中發現不一致。 也就是說,記錄的物件標識碼與錯誤訊息中指定的對象之間不一致。
當一或多個系統數據表以在系統元數據中建立不一致的方式進行手動更新時,就會發生此錯誤。 例如,您可以手動刪除資料表中的 sysobjects 物件,而不移除其他資料表中的相關聯資料列,例如 sysindexes 和 syscolumns。
針對從 SQL Server 2000 (8.x) 升級至更新版本的 SQL Server 的資料庫執行時 DBCC CHECKDB ,可能會發生此錯誤。 在 SQL Server 2000 (8.x) DBCC CHECKDB 中,不包含 DBCC CHECKCATALOG 功能,因此除非特別針對 SQL Server 2000 (8.x) 中的資料庫執行,否則 DBCC CHECKCATALOG 不會在升級之前攔截錯誤。
您可能會看到下列任何錯誤,以及錯誤 8992:
| 訊息識別碼 | 消息正文 |
|---|---|
3851 |
An invalid row (%ls) was found in the system table sys.%ls%ls. |
3852 |
Row (%ls) in sys.%ls%ls does not have a matching row (%ls) in sys.%ls%ls. |
3853 |
Attribute (%ls) of row (%ls) in sys.%ls%ls does not have a matching row (%ls) in sys.%ls%ls. |
3854 |
Attribute (%ls) of row (%ls) in sys.%ls%ls has a matching row (%ls) in sys.%ls%ls that is invalid. |
3855 |
Attribute (%ls) exists without a row (%ls) in sys.%ls%ls. |
3856 |
Attribute (%ls) exists but should not for row (%ls) in sys.%ls%ls. |
3857 |
The attribute (%ls) is required but is missing for row (%ls) in sys.%ls%ls. |
3858 |
The attribute (%ls) of row (%ls) in sys.%ls%ls has an invalid value. |
使用者動作
卸除並重新建立指定的物件
可能的話,請卸除並重新建立指定的物件。 例如,如果對像是預存程式或使用者定義類型,重新建立物件可能會解決問題。
從備份還原
如果問題與硬體無關,且可用的已知清除備份,請從備份還原資料庫。 只有在備份未包含元數據錯誤時,才適用此動作。
將數據匯出至新的資料庫
如果備份也包含元數據不一致的情況,您必須建立新的資料庫,並將現有資料庫的內容匯出至新的資料庫。
DBCC CHECKDB 無法修復此錯誤
無法修復此錯誤。 如果您無法從備份還原資料庫,請連絡Microsoft支持人員。
不要手動更新系統數據表
請勿對系統數據表進行手動更新。 SQL Server 不支援對系統資料庫進行任何手動變更。 如果您在 SQL Server 資料庫中更新系統資料表,則會記錄下列事件:
手動更新系統數據表時
Msg 17659: Warning: System table ID <id> has been updated directly in database ID <id> and cache coherence may not have been maintained. SQL Server should be restarted.
使用手動更新的系統數據表啟動資料庫
Msg 3859: Warning: The system catalog was updated directly in database ID <id>, most recently at date_time.
在手動更新系統數據表之後,您可以執行 DBCC CHECKDB 命令
Msg 3859: Warning: The system catalog was updated directly in database ID <id>, most recently at date_time.