MSSQLSERVER_5009
适用于:SQL Server
详细信息
属性 | 值 |
---|---|
产品名称 | SQL Server |
事件 ID | 5009 |
事件来源 | MSSQLSERVER |
组件 | SQLEngine |
符号名称 | ALT_BADDISKS |
消息正文 | 找不到或无法初始化语句中列出的一个或多个文件 |
说明
此错误表示在 ALTER DATABASE 或 DBCC SHRINK* 命令中指定了无法解析的文件名或文件 ID。
考虑以下情况:
- 你有一个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 会尝试删除已删除的逻辑文件。 这会导致错误消息。
用户操作
若要解决此问题,请按照以下步骤操作。
注意
这些步骤会导致文件 ID 值被重用。
使用 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 的逻辑文件。