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)