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 會嘗試移除已卸除的邏輯檔案。 這會導致錯誤訊息。
使用者動作
若要暫時解決此問題,請依照這些步驟執行。
注意
這些步驟會導致重複使用檔案標識碼值。
使用 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)
注意
您可以使用任何檔案名或任何檔案路徑。
使用 ALTER DATABASE 語句移除您在步驟 1 中建立的邏輯檔案,如下列範例所示:
ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
建立資料庫的事務歷史記錄備份。
嘗試再次移除名為 db_file1 的邏輯檔案。