Share via


MSSQLSERVER_5180

適用於:SQL Server

詳細資料

屬性
產品名稱 SQL Server
事件識別碼 5180
事件來源 MSSQLSERVER
元件 SQLEngine
符號名稱 DSK_BAD_FCB_FILEID
訊息文字 無法為無效檔案識別碼 %d 於資料庫 '%.*ls' 中開啟檔案控制銀行 (File Control Bank,FCB)。 請確定檔案的位置, 執行 DBCC CHECKDB。

說明

當 SQL Server 資料庫引擎參考不正確檔案識別碼時,查詢或作業可能會失敗,並出現錯誤 5180。 這是範例:

訊息 5180,層級 22,狀態 1,第 1 行
無法為無效檔案識別碼 %d 於資料庫 '%.*ls' 中開啟檔案控制銀行 (File Control Bank,FCB)。 請確定檔案的位置, 執行 DBCC CHECKDB。

由於錯誤會以嚴重性 22 引發,因此使用者的會話將會中斷連線。 此錯誤訊息會寫入 SQL Server 錯誤記錄檔,以及事件識別碼 = 5180 的 Windows 應用程式事件記錄檔。

可能的原因

SQL Server 資料庫引擎會參考許多不同情況下的檔案識別碼,大部分是在參考頁面識別碼時(因為檔案識別碼是頁面識別碼的第一個部分)。 如果基於任何原因,所參考的檔案識別碼為 < 0,或不是資料庫中的有效檔案識別碼(根據sys.database_files等系統類別目錄檢視中列出的有效檔案識別碼),則可能會遇到 5180 錯誤。

其中一個可能的原因是儲存的檔案識別碼無效。 由於資料列中轉送的記錄會參考另一個頁面,因此當存取該頁面且檔案識別碼無效時,可能會發生 5180 錯誤。 此條件是頁面上具有轉送記錄的資料庫損毀錯誤。 (在此範例中, DBCC CHECKDB 會報告 Msg 8993)。

另一個範例是不正確檔案識別碼,做為頁面識別碼的一部分,儲存在下一個或上一頁識別碼的頁面標頭中。 此欄位可用來連結一系列頁面,例如在叢集索引中。 如果上一頁或下一頁的檔案識別碼無效,當引擎必須參考這個來周遊至下一頁或上一頁時,就可能發生 5180 錯誤。 (在此範例中, DBCC CHECKDB 報告 Msg 8981)。

如果問題不是因為儲存的頁面識別碼損毀而不正確檔案識別碼,則問題可能位於 SQL Server 資料庫引擎內。

使用者動作

如果您遇到此錯誤,您應該針對錯誤訊息中列出的資料庫執行 DBCC CHECKDB 。 如果您發現錯誤,您應該從已知的良好備份還原。 如果您無法從備份還原,則另一個選項是使用 的修復選項 DBCC CHECKDB ,如其輸出所建議。 在大部分情況下,這種錯誤的修復會導致資料遺失。 如需使用資料庫損毀問題的原因和原因的詳細資訊,請參閱文章: 如何針對 DBCC CHECKDB 所報告的資料庫一致性錯誤進行疑難排解。

如果未 DBCC CHECKDB 回報任何錯誤,且問題持續發生,您應該連絡 Microsoft 技術支援以尋求協助。 請準備好提供遇到 5180 錯誤的查詢。 請參閱詳細資訊 一節,以瞭解如何判斷發生錯誤的查詢。

其他相關資訊

檔案控制區塊 (FCB) 是內部記憶體結構,可追蹤與資料庫相關聯之檔案的重要資訊。 檔案識別碼可用來唯一識別資料庫的 FCB。 如果伺服器引擎嘗試參考不正確檔案識別碼,則 FCB 結構無法找到觸發 5180 錯誤條件的 FFCB 結構。

若要找出發生此錯誤的查詢,您可以使用下列技術:

  • 針對 SQL Server 2008 和更新版本,請參閱system_health會話是否有錯誤記錄,其中應該包含查詢文字。 如需system_health會話的詳細資訊,請參閱資源: 支援 SQL Server 2008:system_health會話
  • 使用 SQL Server Profiler 並擷取 SQL:BatchStartingRPC:Starting 和 例外狀況事件。 尋找與例外狀況事件相關聯之會話 5180 例外狀況事件前面的查詢。