关于数据库的差异备份和还原

本文讨论了一种SQL Server数据库在不同环境下还原完整备份加非首个差异备份时遇到的问题。在Windows Server 2003 R2上运行的SQL Server 2005中,尝试在64位集群服务器和32位本地计算机上还原时失败。问题在于存在一个未还原的完整备份,导致差异备份无法正确应用。解决方案包括检查并确保在应用差异备份前正确还原所有中间的完整备份。

问题如下:

数据库环境:
Windows Server 2003 R2
SQL Server 2005
企业版 32+SP2补丁
数据库有全文索引每周完整备份,每天差异备份
现在操作 还原 完整备份+与完整备份匹配的差异备份  
在集群服务器上(64)还原失败,在本地计算机上(32)还原失败,想问一下是什么原因导致这个情况的产生,如何修复?
注:在还原完整备份+完整备份后的第一个差异备份成功
还原完整备份+完整备份后的非第一个差异备份 失败

以下为还原方法:

SQL code

--还原完整备份-------成功

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 正在异常终止。

 

自己查下在你的差异备和指定全备之间是否还有全备吧:

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

 

总结:中间还有一次全量备份,破坏了我的完整备份和差异备份的连接点,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值