我正在处理本地计算机上附加的一堆 *.mdf 文件。在我意外删除包含一些 *.mdf 文件的文件夹后,我无法在 SQL Management Studio 中查看数据库,因此无法分离它们。
打开 SQLMS 时出现错误:
Unable to open the physical file "D:\Foo\bar.mdf".
Operating error 5: "5(Access is denied)". (Microsoft SQL Server, Error: 5120)
我已经备份了这些文件,但即使我恢复了这些文件,仍然会出现这个错误。
将文件恢复到原始路径后,我尝试从文件重新附加数据库,但出现错误:
Cannot attach a database with the same name as an existing database.
但我也看不到以前的数据库,所以我无法将其分离。
我如何分离/移除/删除旧数据库以便可以从文件中重新附加它?
答案1
你应该试试:
- 停止 SQL Server
- 将文件复制回其原来的位置
- 启动 SQL Server
如果失败,您可以尝试删除数据库
- (在 SSMS 中的主数据库中)
DROP Database < DatabaseName >
- 将文件复制回其原来的位置
- 再次附加数据库
答案2
在这种情况下,你可以运行
select * from sys.databases
检查 SQL Server 实例中存在的数据库。如果数据库存在,请检查其 state_desc 列值,它可能不在线。
然后,运行以下命令查看其文件位于何处:
SELECT type_desc, name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('Db_Name')
代替数据库名称使用您的数据库名称。
在此基础上,您可以采取适当的行动。