共用方式為


MSSQLSERVER_605

適用於:SQL Server

詳細資料

屬性
產品名稱 SQL Server
事件識別碼 605
事件來源 MSSQLSERVER
元件 SQLEngine
符號名稱 WRONGPAGE
訊息文字 嘗試提取邏輯頁 %S_PGID 失敗,資料庫:%d。 它屬於配置單位 %I64d,而非屬於 %I64d。

說明

此錯誤通常表示指定資料庫中的頁面或配置損毀。 SQL Server 會在讀取屬於數據表的頁面時偵測損毀,方法是遵循頁面連結或使用索引配置對應 (IAM)。 配置給數據表的所有頁面都必須屬於與數據表相關聯的其中一個配置單位。 如果頁面標頭中包含的配置單位標識碼不符合與數據表相關聯的配置單位標識符,則會引發這個例外狀況。 錯誤訊息中列出的第一個配置單位標識符是頁面標頭中的標識碼,而第二個配置單位值是與數據表相關聯的標識碼。

數據損毀錯誤

嚴重性層級 21 表示潛在的數據損毀。 可能的原因是該物件的 sys.objects 目錄檢視中有損毀的頁面鏈結、損毀的 IAM 或無效的專案。 這些錯誤通常是由硬體或磁碟設備驅動器失敗所造成。

暫時性錯誤

嚴重性層級 12 表示潛在的暫時性錯誤;也就是說,它會在快取中發生,而且不會指出磁碟上的數據損毀。 暫時性 605 錯誤可能是由下列條件所造成:

  • 操作系統會提前通知 SQL Server I/O 作業已完成;即使沒有實際的數據損毀,仍會顯示錯誤訊息。

  • 使用優化器提示 NOLOCK 執行查詢,或將交易隔離等級設定為 READ UNCOMMITTED。 當使用 NOLOCK 或 READ UNCOMMITTED 交易隔離等級的查詢嘗試讀取其他使用者正在移動或變更的數據時,就會發生 605 錯誤。 若要確認其為暫時性 605 錯誤,請稍後重新執行查詢。

一般而言,如果在數據存取期間發生錯誤,但後續的 DBCC CHECKDB 作業會完成而不會發生錯誤,則 605 錯誤可能是暫時性的。

使用者動作

如果 605 錯誤不是暫時性的,則問題十分嚴重,而且必須藉由執行下列工作來更正:

  1. 執行下列查詢,以識別與訊息中指定的配置單位相關聯的數據表。 將取代 allocation_unit_id 為錯誤訊息中指定的配置單位。

    USE [database_name];  
    
    GO  
    
    SELECT au.allocation_unit_id, OBJECT_NAME(p.object_id) AS table_name, fg.name AS filegroup_name,  
    
    au.type_desc AS allocation_type, au.data_pages, partition_number  
    
    FROM sys.allocation_units AS au  
    
    JOIN sys.partitions AS p ON au.container_id = p.partition_id  
    
    JOIN sys.filegroups AS fg ON fg.data_space_id = au.data_space_id  
    
    WHERE au.allocation_unit_id = '<allocation_unit_id>' OR au.allocation_unit_id = '<allocation_unit_id>'  
    
    ORDER BY au.allocation_unit_id;  
    
    GO  
    
  2. 在與錯誤訊息中指定的第二個配置單位標識符相關聯的數據表上,執行 DBCC CHECKTABLE,但不含 REPAIR 子句。

  3. 儘快執行不含 REPAIR 子句的 DBCC CHECKDB,以判斷整個資料庫中損毀的完整範圍。

  4. 檢查錯誤記錄檔中是否有經常伴隨 605 錯誤的其他錯誤,並檢查 Windows 事件記錄檔中是否有任何系統或硬體相關問題。 修正記錄中包含的任何硬體相關問題。

如果問題與硬體無關,請執行下列其中一項工作:

  1. 從已知的清除備份還原資料庫。 您可以利用頁面還原備份功能,只還原損毀的頁面。

  2. 使用步驟 3 中所執行 DBCC CHECKDB 作業所建議的 REPAIR 子句來執行 DBCC CHECKDB,以修復損毀。 如果使用其中一個 REPAIR 子句執行 DBCC CHECKDB 無法修正問題,請連絡您的主要支援提供者。 讓 DBCC CHECKDB 的輸出可供檢閱。

    警告

    如果您不確定 DBCC CHECKDB 與 REPAIR 子句對您的資料有何影響,請先連絡您的主要支援提供者,再執行此語句。

另請參閱

DBCC CHECKTABLE (Transact-SQL)