共用方式為


MSSQLSERVER_5009

適用於:SQL Server

詳細資料

屬性
產品名稱 SQL Server
事件識別碼 5009
事件來源 MSSQLSERVER
元件 SQLEngine
符號名稱 ALT_BADDISKS
訊息文字 找不到語句中列出的一或多個檔案,或無法初始化

說明

此錯誤表示您在 ALTER DATABASE 或 DBCC SHRINK* 命令中指定了無法解析的檔名或 fileID。

試想以下情況:

  • 您有Microsoft使用完整或大容量日誌恢復模式的 SQL Server 資料庫。
  • 您會將名為 db_file1 的新資料檔新增至資料庫。
  • 您可以將檔案的 db_file1 檔案類型設定為資料。
  • 您發現您未正確指定檔案類型。
  • 您會移除檔案 db_file1 ,然後備份此資料庫的事務歷史記錄。
  • 您會將名為 db_file1 的新記錄檔新增至相同的資料庫。
  • 您嘗試使用 ALTER DATABASE 語句或使用 SQL Server Management Studio 來移除名為 db_file1 的記錄檔。

在此情況下會收到類似下列的錯誤訊息:

訊息 5009、層級 16、狀態 9、行 1 找不到語句中列出的一或多個檔案,或無法初始化。

可能的原因

如果您嘗試移除的檔案邏輯名稱在系統目錄數據表中不是唯一的,就會發生此問題。 例如,如果檔案先前存在於資料庫中,然後移除檔案,就會發生此問題。

當您嘗試移除具有相同邏輯名稱的檔案時,SQL Server 會嘗試移除已卸除的邏輯檔案。 這會導致錯誤訊息。

使用者動作

若要暫時解決此問題,請依照這些步驟執行。

注意

這些步驟會導致重複使用檔案標識碼值。

  1. 使用 ALTER DATABASE 語句來建立具有不同名稱和相同數據類型的新邏輯檔案。 例如,將邏輯檔案命名為 different_remove_file_name 而非 db_file1,如下列範例所示:

    ALTER DATABASE [DBNAME] ADD FILE ( NAME = N'different_remove_file_name',
    FILENAME = N'D:\MSSQL.1\MSSQL\DATA\db_file1.ndf', SIZE = 1MB, MAXSIZE = 1MB)
    

    注意

    您可以使用任何檔案名或任何檔案路徑。

  2. 使用 ALTER DATABASE 語句移除您在步驟 1 中建立的邏輯檔案,如下列範例所示:

    ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
    
  3. 建立資料庫的事務歷史記錄備份。

  4. 嘗試再次移除名為 db_file1 的邏輯檔案。