温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
  • 首页 > 
  • 教程 > 
  • 数据库 > 
  • SQL Server [备份恢复]:完整备份,差异备份或事务日志备份,尾部日志备份

SQL Server [备份恢复]:完整备份,差异备份或事务日志备份,尾部日志备份

发布时间:2020-07-08 06:27:03 来源:网络 阅读:1895 作者:chenhao_asd 栏目:数据库

事故背景:

突然间数据库无缘无故损坏了,差异备份或事务日志备份在3点才会自动去做,那么如何将2点到240之间的数据恢复呢?这就需要通过备份尾部日志进行恢复了。

环境描述:
  某公司装了一台SQL Server数据库,为了保证数据库能够在出现故障时及时的修复,管理员做了备份操作,比如说完整备份+差异备份或者完整备份+事务日志备份,而且备份的时间是每隔6个小时做一次完整备份,在每天的1点、6点、12点、18点,6个小时之内是每隔1个小时做一次差异备份事务日志备份,并且和计划任务结合在了一起。

  假如现在存在这样一种场景,在240分左右,突然间数据库无缘无故损坏了,差异备份或事务日志备份在3点才会自动去做,那么如何将2点到240之间的数据恢复呢?这就需要通过备份尾部日志进行恢复了。(必须确保log文件没有损坏)

原文出处:

***** http://blog.csdn.net/misterliwei/article/details/5884656****

http://www.w2bc.com/Article/44855

http://www.jb51.net/article/18613.htm

尾部日志:

http://blog.csdn.net/misterliwei/article/details/5884656 

http://blog.csdn.net/dba_huangzj/article/details/8491327 

SQL Server 备份基础 :

http://blog.csdn.net/dba_huangzj/article/details/22683687   

场景:

--1. Backup:

a. Fullbackup @1:00AM: (Every 6 hours)

111

222

  --insert into  [Temp].[dbo].[demo] values(111)

  --insert into  [Temp].[dbo].[demo] values(222)

  --alter databasetemp set  recovery full

  --backup databasetemp  todisk='D:\MSSQL10.MSSQLSERVER\MSSQL\Bak\Temp_full.bak' with INIT

b. DiffBackup 或者Logback @2:00AM : (Every 1 hour)

111

222

333

444

  --insert into  [Temp].[dbo].[demo] values(333)

  --insert into  [Temp].[dbo].[demo] values(444)

  --backup databasetemp  todisk='D:\MSSQL10.MSSQLSERVER\MSSQL\Bak\Temp_diff.bak' with INIT, differential

或者

  -- backup logtemp  todisk='D:\MSSQL10.MSSQLSERVER\MSSQL\Bak\Temp_log.bak' with INIT

差异备份或日志备份结束后,做了一些插入操作

  --insert into  [Temp].[dbo].[demo] values(555)

111

222

333

444

555

c. 在数据文件损坏后,完整备份恢复之前,做一次备份尾部日志,备份差异备份之后的改动

NO_TRUNCATE  LogBackup@2:45AM :

  -- BACKUP LOG temp TO DISK = 'D:\MSSQL10.MSSQLSERVER\MSSQL\Bak\Temp_log2.bak' WITH INIT, NO_TRUNCATE;

 GO

--2. Restore:

a. 删除原始数据库(先备份原始的mdf,ldf文件)

--drop database temp

b. 恢复完整备份,norecovery 模式,最后一次恢复选择recovery

--restore database temp from disk ='D:\MSSQL10.MSSQLSERVER\MSSQL\Bak\Temp_full.bak'  with norecovery

c. 恢复差异/日志备份,norecovery模式

--restore database temp from disk ='D:\MSSQL10.MSSQLSERVER\MSSQL\Bak\Temp_diff.bak'  with norecovery

--restore log temp from disk ='D:\MSSQL10.MSSQLSERVER\MSSQL\Bak\Temp_log.bak' with norecovery

d. 恢复备份尾部日志,recovery模式

--restore log temp from disk ='D:\MSSQL10.MSSQLSERVER\MSSQL\Bak\Temp_log2.bak'  with recovery

 

All data:

111

222

333

444

555

 


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI