IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 数据库 > MSSQL > 差异备份的恢复问题

差异备份的恢复问题

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

A : 情况是这样的 

create  database  test 

create  table  t(a  int) 

insert  into  test..t  select  1 

然后进行一次完整备份 

backup  database  test  to  disk='c:test.bak' 

insert  into  test..t  select  2 

再进行一次完整备份 

backup  database  test  to  disk='c:test.bak' 

insert  into  test..t  select  3 

此时用  restore  database  test  from  disk='c:test.bak'  with  file=1 

结果为  1,  此为正确 

用  restore  database  test  from  disk='c:test.bak'  with  file=2 

结果为  1, 

2  此也为正确 

当表t中为1,2,3的时候,在插入一条纪录结果为1,2,3,4然后进行一次差异备份 

backup  database  test  to  disk='c:test.bak'  with  differential 

然后往执行delete  from  t  删除所有纪录 

我现在想恢复最后的那次差异备份(结果为1,2,3,4),用语句改如何实现呢? 

---------------------------------------------------------------   

下面的是详细的过程,在我的电脑上测试成功:   

--清除环境,防止现有的数据影响测试结果 

exec  master..xp_cmdshell  'del  c:text.bak' 

if  exists(select  *  from  master..sysdatabases  where  name='test') 

drop  database  test 

go   

--创建数据库 

create  database  test 

go 

--打开创建的数据 

use  test 

go   

--创建测试表 

create  table  t(a  int)   

--切换回master数据库 

use  master 

go 

--插入数据1 

insert  into  test..t  select  1 

go   

--然后进行一次完整备份 

backup  database  test  to  disk='c:test.bak' 

go  

--插入数据2 

insert  into  test..t  select  2 

go 

--再进行一次完整备份 

backup  database  test  to  disk='c:test.bak' 

go 

--插入3,4 

insert  into  test..t  select  3 

insert  into  test..t  select  4 

go 

--差异备份: 

backup  database  test  to  disk='c:test.bak'  with  differential  

--删除数据库 

drop  database  test  

--还原数据库和差异数据库备份 

--还原完整备份 

restore  database  test  from  disk='c:test.bak'  with  file=2,norecovery 

--还原差异备份的内容 

restore  database  test  from  disk='c:test.bak'  with  file=3,recovery   

--显示恢复后的数据 

select  *  from  test..t 

--------------------------------------------------------------- 

都已经说的好明白了,怎么可能会不行呢? 

前段时间我就做过类似程序的! 

必须说明的是:在恢复差异备份时,必须恢复最后一次的完整备份!!(切记) 

而且下面的两个语句必须同时执行,即放在一个事务中。   

restore  database  test  from  disk='c:test.bak'  with  file=离你要恢复的差异备份最近一次的完整备份号,norecovery   

restore  database  test  from  disk='c:test.bak'  with  file=你要还原的差异备份号,recovery   

具体的备份号可以从下面得到:(你可以认真研究一下backupfile,backupset,backmediaset,backupmediafamily几个表,可以发现规律) 

select  backup_start_date  as  备份时间,position  as  备份号, 

case  type    when  'D'  then  '完整备份'  when  'I'  then  '差异备份'  end  as  备份类型   

from  msdb..backupset  where  database_name='test'   

and  media_set_id  in   

(select  distinct  media_set_id  from  msdb..backupmediafamily  where  physical_device_name='c:test.bak') 

order  by  position 

如果还不行的话,可以给我留言~ 

---------------------------------------------------------------  

---执行下面的序列:  

create  database  test 

go 

use  test 

go 

create  table  test..t(a  int)  

insert  test..t  select  1 

backup  database  test  to  disk='c:test.bak' 

insert  test..t  select  2 

backup  database  test  to  disk='c:test.bak' 

insert  test..t  select  3 

insert  test..t  select  4 

backup  database  test  to  disk='c:test.bak'  with  differential 

delete  test..t 

go  

--下面开始恢复:  

restore  database  test  from  disk='c:test.bak'  with  file=2,norecovery  --对应你最后一次的完整备份

restore  database  test  from  disk='c:test.bak'  with  file=3  --对应你要还原的差异备份  

go  

select  *  from  test

关键词标签:问题,恢复,备份,差异

相关阅读 sql server系统表损坏的解决方法 SQL Server asp.net 数据提供程序连接池 SqlServer2005对现有数据进行分区具体步骤 一个Access数据库数据传递的实例方法 为导入文件加上时间戳标记的两种方法 SQL Server 2005 在不允许远程连接的情况下的破解

文章评论
发表评论

热门文章 sql server系统表损坏的解决方法 sql server系统表损坏的解决方法 SqlServer2005对现有数据进行分区具体步骤 SqlServer2005对现有数据进行分区具体步骤 解决SQL Server中Group无法实现的问题 解决SQL Server中Group无法实现的问题 SQL Server 2005降级到2000的正确操作步骤 SQL Server 2005降级到2000的正确操作步骤 手把手教你学会SQL Server镜像操作 手把手教你学会SQL Server镜像操作 实战手记:让百万级数据瞬间导入SQL Server 实战手记:让百万级数据瞬间导入SQL Server

相关下载

人气排行 配置和注册ODBC数据源-odbc数据源配置教程 如何远程备份(还原)SQL2000数据库 SQL2000数据库远程导入(导出)数据 SQL2000和SQL2005数据库服务端口查看或修改 修改Sql Server唯一约束教程 SQL Server 2005降级到2000的正确操作步骤 sql server系统表损坏的解决方法 浅谈JSP JDBC来连接SQL Server 2005的方法 SQL Server创建表语句介绍 MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系 如何使用SQL Server中的客户端配置工具 SQL Server 分布式查询:OLE DB连接(一)