差异备份恢复

cc850107 2012-09-18 04:24:54
数据库不小心删掉了,想恢复数据库。现在有一个完全备份,和之后的多个差异备份,每个备份是一个文件。
执行第一个完全备份恢复没有问题。

RESTORE DATABASE [Club] FROM DISK = N'E:\mydb.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
GO
RESTORE DATABASE [Club] FROM DISK = N'E:\mydb.bak' WITH FILE = 100, NOUNLOAD, STATS = 10


如何再把其它几个备份文件加上?

我执行下面会报错:

RESTORE DATABASE [Club] FROM DISK = N'E:\mydbdif1.bak' WITH FILE = 60, NOUNLOAD, STATS = 10
...全文
193 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Felixzhaowenzhong 2012-09-18
  • 打赏
  • 举报
回复
先回复你的 最近的完整备份。还原时候选择 “不对数据库做任何操作,不回滚任何事务” 选项

然后再 恢复你最后一个 差异备份文件 选择 回滚未提交的事务(如果后续有日志,则 选择 上一步的选项)
唐诗三百首 2012-09-18
  • 打赏
  • 举报
回复
怎样恢复取决于备份的策略是什么,right?

最好把你的备份脚本贴出来看看,否则我也不知怎么恢复喔.
以学习为目的 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 8 楼 的回复:

还原的顺序不对吧,用restore headeronly查看一下LastLsn是否是连续的.
SQL code

restore headeronly from disk='E:\mydbdif.bak'


不连续,第一个文件,differentalbaseLSN=41000001188100101, 其它的备份文件的differentalbaseL……
[/Quote]

还原全备份数据后,后面必须是连续的差异备份按顺序还原
cc850107 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

还原的顺序不对吧,用restore headeronly查看一下LastLsn是否是连续的.
SQL code

restore headeronly from disk='E:\mydbdif.bak'
[/Quote]

不连续,第一个文件,differentalbaseLSN=41000001188100101, 其它的备份文件的differentalbaseLSN=41000001188100106,还有办法恢复吗?多谢!
唐诗三百首 2012-09-18
  • 打赏
  • 举报
回复
还原的顺序不对吧,用restore headeronly查看一下LastLsn是否是连续的.

restore headeronly from disk='E:\mydbdif.bak'
SQL77 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
引用 2 楼 的回复:

还原全备和最后一个差异备份。有日志的话再加差异后的日志备


你好,
我现在这样做

SQL code


RESTORE DATABASE [Club] FROM DISK = N'E:\mydb.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
GO

RESTORE DAT……
[/Quote]
确认你还原后的第一个是最后一个全备。差异备份是你对应全备后的差异备。
这就是你最后的数据。

如果要还原其他段的要注意自己的数据。
發糞塗牆 2012-09-18
  • 打赏
  • 举报
回复
看来是你差异备份对应的完整备份不是你用的那个。
billpu 2012-09-18
  • 打赏
  • 举报
回复
确认在你的全备份后没有更新的全备份了.
cc850107 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

还原全备和最后一个差异备份。有日志的话再加差异后的日志备
[/Quote]

你好,
我现在这样做

RESTORE DATABASE [Club] FROM DISK = N'E:\mydb.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
GO

RESTORE DATABASE [Club] FROM DISK = N'E:\mydbdif.bak' WITH FILE = 63, NOUNLOAD, STATS = 10
GO


报下面的错误
This differential backup cannot be restored because the database has not been restored to the correct earlier state.
什么问题?怎么办?
發糞塗牆 2012-09-18
  • 打赏
  • 举报
回复
无论什么还原,非【最后一个还原文件】之前的,还原时都要加上NORECOVERY
SQL77 2012-09-18
  • 打赏
  • 举报
回复
还原全备和最后一个差异备份。有日志的话再加差异后的日志备
SQL77 2012-09-18
  • 打赏
  • 举报
回复
如何还原差异数据库备份 (Transact-SQL)
还原差异数据库备份

执行 RESTORE DATABASE 语句,同时指定 NORECOVERY 子句,以还原差异数据库备份之前的数据库备份。有关更多信息,请参阅如何还原数据库备份。


执行 RESTORE DATABASE 语句以还原差异数据库备份,同时指定:
差异数据库备份将应用到的数据库的名称。


要从其中还原差异数据库备份的备份设备。


NORECOVERY 子句,前提是在还原差异数据库备份后,还要应用事务日志备份,否则应指定 RECOVERY 子句。
示例

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧