恢复差异备份时出现问题

恢复差异备份时出现问题

我尝试恢复差异备份但出现以下错误:

服务器还原失败。(Microsoft.Sqlserver.smoextended)附加信息:system.data.sqlclient.sqlerror:文件“astroved_data”无法通过此还原操作移动(microsoft.sqlserver.smo)

astroved_data 是一个.mdf 文件。

谁能帮我?

答案1

我无法让此错误发生在您指定使用的 SSMS 2008 中,但我可以让它发生在 SSMS 2005 中。
替代文本

原因是当您在 OPTIONS 页面下进行差异还原时,您无法为数据文件指定新位置。

如果您在选项页面中恢复完整备份时选择了新位置,则必须将其更改为相同的物理位置当您进行差异还原时。否则,SSMS 会将其放入原始位置并尝试将其还原到那里。

该问题似乎已在 SSMS 2008 中修复(已使用 RTM 检查)在进行差异还原时,它似乎会忽略在路径选项页面上输入的任何值,即使位置无效。

您还选择了哪些其他选项?这可能是触发错误的另一种方式?尝试将数据/日志文件放在与完整恢复中使用的相同位置,看看是否可以解决问题。

如果你厌倦了 SSMS 的摆布,那么学习使用 T-SQL 进行恢复:

-- use this command to get the logical names for the restore 
-- so you can specify a new location using MOVE
RESTORE FILELISTONLY FROM DISK='c:\av_full.bak'

-- restore the full backup, don't recover yet
RESTORE DATABASE adventureworks1 FROM DISK= 'c:\av_full.bak' WITH 
MOVE 'AdventureWorks_Data'  to 'C:\AdventureWorks_Data.mdf',
MOVE 'AdventureWorks_Log'   to 'C:\AdventureWorks_Log.ldf' , 
NORECOVERY

-- restore the differential
RESTORE DATABASE adventureworks1 FROM DISK= 'c:\av_diff.bak'

答案2

我遇到过几次这个问题。如果您更熟悉 SSMS,最简单的解决方法是像最初一样准备恢复,然后单击“恢复”对话框中的“脚本”按钮。

这将输出类似这样的内容:

RESTORE DATABASE [UAT] 
FROM  DISK = N'd:\Database_backup\mydifferentialbackup.bak' 
WITH  FILE = 1,  
MOVE N'mydb_Data' TO N'R:\MSSQL10_50.REPORTING\MSSQL\Data\mydb.mdf',  
MOVE N'mydb_FullText' TO N'R:\MSSQL10_50.REPORTING\MSSQL\Data\mydb.ndf',  
MOVE N'mydb_Log' TO N'R:\MSSQL10_50.REPORTING\MSSQL\Data\mydb.ldf',  
NOUNLOAD,  STATS = 10
GO

然后只需删除 MOVE 子句:

RESTORE DATABASE [UAT] 
FROM  DISK = N'd:\Database_backup\mydifferentialbackup.bak' 
WITH  FILE = 1,  
NOUNLOAD,  STATS = 10
GO

嗯,这应该可行。

相关内容