共用方式為


MSSQLSERVER_8992

適用於:SQL Server

詳細資料

項目
產品名稱 SQL 伺服器
事件識別碼 8992
事件來源 MSSQLSERVER
元件 SQLEngine
符號名稱 DBCC3_CHECK_CATALOG
訊息文字 檢查目錄訊息層級層級狀態:訊息。

注意

8992 錯誤訊息會參考另一個特定訊息(範圍從 3851 到 3858),以了解實際不一致的情況。

說明

DBCC CHECKCATALOGDBCC CHECKDB 在指定之對象的系統元數據表中發現不一致。 也就是說,記錄的物件標識碼與錯誤訊息中指定的對象之間不一致。

當一或多個系統數據表以在系統元數據中建立不一致的方式進行手動更新時,就會發生此錯誤。 例如,您可以手動刪除資料表中的 sysobjects 物件,而不移除其他資料表中的相關聯資料列,例如 sysindexessyscolumns

針對從 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.