数据库恢复因移动而失败

时间:2013-02-19 09:18:37

标签: sql sql-server sql-server-2008

我正在尝试恢复数据库备份但收到错误:

  

服务器'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)

6 个答案:

答案 0 :(得分:27)

恢复时,您需要确保

  • 选择一个尚不存在的新数据库名称(除非您要覆盖该预先存在的数据库)

enter image description here

  • 勾选Overwrite标签页中的Options选项,为.mdf.ldf文件定义有效和新文件名,以便您不会意外覆盖系统上的另一个数据库:

enter image description here

答案 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)

如果您遇到此问题并且不是上述问题,请尝试使用还原选项>文件,选中“将所有文件重新定位到文件夹”复选框。

enter image description here

答案 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管理器中,还原数据库时需要选择那些新文件。