我正在尝试恢复数据库备份但收到错误:
服务器'ASIF-VAIO'的恢复失败。 (Microsoft.SqlServer.SmoExtended)
其他信息:
System.Data.SqlClient.SqlError:文件'C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ DATA \ uwa.mdf'声称为 'Aston_Fresh_log'(2)和'Aston_Fresh'(1)。 WITH MOVE子句可以是 用于重定位一个或多个文件。 (Microsoft.SqlServer.Smo)
答案 0 :(得分:27)
恢复时,您需要确保
Overwrite
标签页中的Options
选项,为.mdf
和.ldf
文件定义有效和新文件名,以便您不会意外覆盖系统上的另一个数据库:
答案 1 :(得分:5)
这篇文章有一些很好的答案,但我不相信我的解决方案在这里,或者我没有理解答案/评论。
但是,当我遇到此错误时,我正在使用2个索引(主要和索引)恢复数据库。问题是,当恢复它时,它创建了两个.ndf文件,每个索引一个,但命名它们是相同的。
基本上我有两个" Restore As"文件恢复到" D:\ MSSQLDATA \ DatabaseName.ndf。
为了解决这个问题,我不得不更改其中一个文件名,例如我改变了
Index | D:\MSSQLDATA\DatabaseName.ndf
Primary | D:\MSSQLDATA\DatabaseName1.ndf
为我修复了这个唯一的文件名。
答案 2 :(得分:3)
这对我有用:在脚本部分为每个MDF和LDF文件指定一个不同的名称。
MOVE N'R_Data'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Build51_Testing_db1.mdf',
MOVE N'R_audit'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Build51_Testing_db2.mdf',
等...
最初由Alberto Morillo建议
答案 3 :(得分:1)
我知道它已经很久以来的最后一个答案,但我碰巧在谷歌搜索这个问题的解决方案。 对我来说是什么,是为恢复编写脚本(更改文件名不起作用)并手动更改代码中的文件名
RESTORE DATABASE [DB_NAME]
FILE = N'[name]',
FILE = N'[name1]',
FILE = N'[name2]'
FROM DISK = N'[file_path]'
WITH FILE = 1m
MOVE N'[name]' TO N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\\[name].mdf',
MOVE N'[name1]' TO N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\\[name1].mdf',
MOVE N'[name2]' TO N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\\[name2].mdf',
MOVE N'[logname]' TO N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\\[logname].ldf'
NOUNLOAD,
REPLACE,
STATS = 10
GO
此致
答案 4 :(得分:0)
如果您遇到此问题并且不是上述问题,请尝试使用还原选项>文件,选中“将所有文件重新定位到文件夹”复选框。
答案 5 :(得分:0)
就我而言,.mdf
文件夹中已经有一个.ldf
和\DATA
文件,因此我必须创建两个新文件:
New-Item C:\path\to\sql\DATA\NewDatabase.mdf
New-Item C:\path\to\sql\DATA\NewDatabase_log.ldf
然后在SQL管理器中,还原数据库时需要选择那些新文件。