SQLServer[备份恢复]:完整备份,差异备份或事务日志备份,尾部日志备份
事故背景:
为巨鹿等地区用户提供了全套网页设计制作服务,及巨鹿网站建设行业解决方案。主营业务为成都做网站、网站制作、巨鹿网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
突然间数据库无缘无故损坏了,差异备份或事务日志备份在3点才会自动去做,那么如何将2点到2点40之间的数据恢复呢?这就需要通过备份尾部日志进行恢复了。
环境描述:
某公司装了一台SQL Server数据库,为了保证数据库能够在出现故障时及时的修复,管理员做了备份操作,比如说完整备份+差异备份或者完整备份+事务日志备份,而且备份的时间是每隔6个小时做一次完整备份,在每天的1点、6点、12点、18点,6个小时之内是每隔1个小时做一次差异备份事务日志备份,并且和计划任务结合在了一起。
假如现在存在这样一种场景,在2点40分左右,突然间数据库无缘无故损坏了,差异备份或事务日志备份在3点才会自动去做,那么如何将2点到2点40之间的数据恢复呢?这就需要通过备份尾部日志进行恢复了。(必须确保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
分享文章:SQLServer[备份恢复]:完整备份,差异备份或事务日志备份,尾部日志备份
网页网址:http://cdiso.cn/article/igsipj.html