汗!差异备份还原失败 200分求解决方法

贾桂权 2009-07-09 02:44:50
集群 环境:
Windows Server 2003 R2
SQL Server 2005 企业版 64位+SP2补丁
数据库有全文索引
每周完整备份,每天差异备份

现在操作 还原 完整备份+与完整备份匹配的差异备份

在集群服务器上(64位)还原失败,在本地计算机上(32位)还原失败,想问一下是什么原因导致这个情况的产生,如何修复?

注:在还原完整备份+完整备份后的第一个差异备份 成功
还原完整备份+完整备份后的非第一个差异备份 失败



以下为还原方法:

--还原完整备份-------成功
RESTORE DATABASE [w] FROM DISK = N'E:\bak\Words\Words_backup_200907050000.bak' WITH FILE = 1,
MOVE N'Words' TO N'D:\database\w.mdf',
MOVE N'Words_log' TO N'D:\database\w_1.ldf',
MOVE N'sysft_Words_FullIndex' TO N'D:\database\w_2.Words_FullIndex',
NORECOVERY, NOUNLOAD, STATS = 10
GO
/*---------------成功

已处理百分之 10。
已处理百分之 20。
已处理百分之 30。
已处理百分之 40。
已处理百分之 50。
已处理百分之 60。
已处理百分之 70。
已处理百分之 80。
已处理百分之 90。
已为数据库 'w',文件 'Words' (位于文件 1 上)处理了 243792 页。
已为数据库 'w',文件 'Words_log' (位于文件 1 上)处理了 1 页。
已为数据库 'w',文件 'sysft_Words_FullIndex' (位于文件 1 上)处理了 4208 页。
已处理百分之 100。
RESTORE DATABASE 成功处理了 248001 页,花费 139.573 秒(14.555 MB/秒)。
*/


--还原差异备份---------失败
RESTORE DATABASE [w] FROM DISK = N'E:\bak\Words\Words_backup_200907090100.diff' WITH FILE = 1,
MOVE N'Words' TO N'D:\database\W.mdf',
MOVE N'Words_log' TO N'D:\database\W_1.ldf',
MOVE N'sysft_Words_FullIndex' TO N'D:\database\w_2.Words_FullIndex',
NOUNLOAD, STATS = 10
GO

/*--------------失败

消息 3136,级别 16,状态 1,第 1 行
无法还原此差异备份,因为该数据库尚未还原到正确的早期状态。
消息 3013,级别 16,状态 1,第 1 行
RESTORE DATABASE 正在异常终止。

*/
...全文
627 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhhui2008 2010-08-26
  • 打赏
  • 举报
回复
收藏起来
居里卡浪 2010-07-14
  • 打赏
  • 举报
回复
学习,学习,学习
htl258_Tony 2009-07-10
  • 打赏
  • 举报
回复
关注.
ChinaJiaBing 2009-07-10
  • 打赏
  • 举报
回复
集群 环境:
Windows Server 2003 R2
SQL Server 2005 企业版 64位+SP2补丁
数据库有全文索引
每周完整备份,每天差异备份

现在操作 还原 完整备份+与完整备份匹配的差异备份

在集群服务器上(64位)还原失败,在本地计算机上(32位)还原失败,想问一下是什么原因导致这个情况的产生,如何修复?

注:在还原完整备份+完整备份后的第一个差异备份 成功
还原完整备份+完整备份后的非第一个差异备份 失败

把数据库服务器先停掉,重启再试(别的地方先断开)
贾桂权 2009-07-09
  • 打赏
  • 举报
回复
我在日志中检查了半天,看到23点时确实存在其他的完整备份,问一下网络部,果真是实施了系统及数据库的完整备份,破坏了我的完整备份和差异备份的连接点,明天过来验证一下,如果没有问题了,就直接散分了。

感谢perfectaction的语句,不错,可惜没用上,等我看完SQL Server日志才看到,呵呵。
nzperfect 2009-07-09
  • 打赏
  • 举报
回复
和cluster没关系,在你的全备和差异备之间应该存在全备。
nzperfect 2009-07-09
  • 打赏
  • 举报
回复
自己查下在你的差异备和指定全备之间是否还有全备吧:

select  server_name   ,                                                         --'服务器名'
database_name ,
round(backup_size/1024.0/1024.0 , 2) as backup_size ,
backup_start_date ,
backup_finish_date ,
datediff(second , backup_start_date , backup_finish_date) as spendtime ,
type,
m.physical_device_name ,
getdate()
from msdb.dbo.backupset b join msdb.dbo.backupmediafamily m on b.backup_set_id = m.media_set_id
where backup_start_date > = '2009-07-01 15:39:30.933' --在这里修改时间
order by database_name,backup_start_date
贾桂权 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 flyrush 的回复:]
会不会中间还有一次全量备份。。。。。。猜测
[/Quote]

我也想过这个问题,但我的完整备份是用作业执行的,每周日执行一次,也没有其他人进行备份的,我也没有发现这期间的完整备份的文件。
flyrush 2009-07-09
  • 打赏
  • 举报
回复
会不会中间还有一次全量备份。。。。。。猜测
flyrush 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jia_guijun 的回复:]

谢谢回复,你应该仔细看我的问题,我当然知道怎么恢复差异备份了。
[/Quote]
果然看错了。。。。。-_-!!!!
贾桂权 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 teng_s2000 的回复:]
备份的数据文件有问题吧哈哈
[/Quote]

但是能够还原 完整备份+第一次的差异备份

只是不能还原 完整备份+非第一次的差异备份

难道其他差异备份有问题?但我在备份时候都对备份文件进行验证了,如果有问题应该会提示的。

Teng_s2000 2009-07-09
  • 打赏
  • 举报
回复
备份的数据文件有问题吧哈哈
贾桂权 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 flyrush 的回复:]
不是,这个就要说道sql server差异备份的概念了。
差异备份指的是什么,指的是从上次全量备份以后的差异,举个例子:
周日进行的全量备份,每天进行一次差异备份,则周一的差异备份时周日到周一的变化,周二的差异备份是周日到周二的变化,一次周二的包含了周一的。

因此,如果你想恢复到周一,用全量+周一差异
如果你想恢复到周二,用全量+周二差异

因此差异不能顺序恢复,没用的。


[/Quote]


谢谢回复,你应该仔细看我的问题,我当然知道怎么恢复差异备份了。
贾桂权 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 haiwer 的回复:]
--还原差异备份---------失败
RESTORE DATABASE [w] FROM  DISK = N'E:\bak\Words\Words_backup_200907090100.diff' WITH  FILE = 1,
    MOVE N'Words' TO N'D:\database\W.mdf',
    MOVE N'Words_log' TO N'D:\database\W_1.ldf',
    MOVE N'sysft_Words_FullIndex' TO N'D:\database\w_2.Words_FullIndex',
    NOUNLOAD,  STATS = 10
GO

语句应该改为

--还原差异备份---------失败
SQL codeRESTOREDATABASE[w]FROMDISK= N'E:\bak\Words\Words_backup_200907090100.diff'WITHFILE=1 RECOVERY;GO
[/Quote]

还是同样的错误。
--小F-- 2009-07-09
  • 打赏
  • 举报
回复
学习
flyrush 2009-07-09
  • 打赏
  • 举报
回复
不是,这个就要说道sql server差异备份的概念了。
差异备份指的是什么,指的是从上次全量备份以后的差异,举个例子:
周日进行的全量备份,每天进行一次差异备份,则周一的差异备份时周日到周一的变化,周二的差异备份是周日到周二的变化,一次周二的包含了周一的。

因此,如果你想恢复到周一,用全量+周一差异
如果你想恢复到周二,用全量+周二差异

因此差异不能顺序恢复,没用的。

昵称被占用了 2009-07-09
  • 打赏
  • 举报
回复
--还原差异备份---------失败
RESTORE DATABASE [w] FROM DISK = N'E:\bak\Words\Words_backup_200907090100.diff' WITH FILE = 1,
MOVE N'Words' TO N'D:\database\W.mdf',
MOVE N'Words_log' TO N'D:\database\W_1.ldf',
MOVE N'sysft_Words_FullIndex' TO N'D:\database\w_2.Words_FullIndex',
NOUNLOAD, STATS = 10
GO

语句应该改为

--还原差异备份---------失败
RESTORE DATABASE [w] FROM  DISK = N'E:\bak\Words\Words_backup_200907090100.diff' WITH  FILE = 1 RECOVERY;
GO
SQL77 2009-07-09
  • 打赏
  • 举报
回复
学习
子陌红尘 2009-07-09
  • 打赏
  • 举报
回复
关注...
htl258_Tony 2009-07-09
  • 打赏
  • 举报
回复
帮顶.

22,300

社区成员

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

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