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:BatchStarting
、RPC:Starting
和 例外狀況事件。 尋找與例外狀況事件相關聯之會話 5180 例外狀況事件前面的查詢。