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

事故背景:

突然间数据库无缘无故损坏了,差异备份或事务日志备份在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

场景:

--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  [email protected]: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

时间: 2024-10-20 12:57:20

SQL Server :完整备份,差异备份或事务日志备份,尾部日志备份的相关文章

SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现) [原创]

一.完整备份.差异备份和事务日志备份的脚本 --完整备份数据库 BACKUP DATABASE Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_full.bak' WITH INIT --差异备份数据库 BACKUP DATABASE Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_diff.bak' WITH INIT, DIFFERENTIAL --加上DIFFERENTIAL代表差异备份 --事

使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务

使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的简单事务复制示例. 2011 年 8 月发布 大多数关注数据复制的 Oracle 技术专家都熟悉 Oracle Streams.在 2009 年之前,Streams 一直是推荐使用的最流行的 Oracle 数据分发技术. 2009 年 7 月,Oracle 收购了 GoldenGate 这一数据库复

《SQL Server企业级平台管理实践》读书笔记——当我们的备份都已经损坏的时候该怎么办

作为数据库管理员最最痛苦的莫过于,当数据库宕机的时候需要找备份,但在这个时候突然发现备份文件也是坏的,这就意味着数据会丢失,为此可能会丢掉职位,饭碗不保,所以为此,我们一定要保证好备份的完整性,一般发生这种情况的原因莫过于一下几种: 1.备份文件和数据库放在同一个(或一组)的物理磁盘上.磁盘出现故障,备份也保不住了. 2.备份介质随坏,或者做的是网络备份,数据在网络传输中发生了损坏. 3.数据库在做完整备份.文件备份或者文件组备份的时候,里面的内容就已经有了随坏. 所以基于此,我们要避免的就是以

sql server与oracle 差异之from的后面不跟表而是一个结果集

1 select * from 2 ( 3 select 1+1 num --在oracle中该行要写成 select 1+1 num from dual 4 ) t 这里的示例非常简单,主要是介绍一下语法差异 在第4行,怎么样?惊讶吧.第4行根本没东西嘛,怎么会有坑呢????? 嗯~~~~这个坑让我郁闷了大半个小时. 因为我现在用oracle很久了,渐渐的我也养成了一个我自己都没意识到的习惯--不给临时结果集起别名 对,在第4行如果没有别名的话,在sql server那里报语法错误, 在 or

SQL Server 数据库的维护(三)__事务(transaction)和锁

--锁 注:SQL Server中的锁用来控制一个事务与另一个事务并发性.系统会自动为被访问的资源设置或释放锁.如果某个事务以锁定一个资源,而另一个事务要访问该资源,那么SQL Server会根据第一个事务所使用的锁模式的兼容性来确定是否授予第二个锁. 资源的锁定模式可分为 意向共享(IS).共享(S).更新(U).意向排他(IX).意向排他共享(SIX)和排他(X)六种模式. 死锁现象:在多个任务中,如果一个任务锁定了其他任务试图锁定的资源,此时会造成任务的永久阻塞,从而出现死锁现象. ---

sql server 2008 r2 数据库操作时提示 9002错误“事物日志已满”问题

事务日志截断 若要避免数据库的事务日志被填满,例行备份至关重要.在简单恢复模式下,备份了数据库后会自动截断日志,而在完整恢复模式下,只有备份了事务日志后方才截断日志.但是,截断过程有时也可能发生延迟.有关识别和应对各种延迟因素的信息,请参阅可能延迟日志截断的因素. 注意  BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 选项已废止.使用完整恢复模式或大容量日志恢复模式时,如果必须删除数据库中的日志备份链,请切换至简单恢复模式.有关详细信息,请参阅有关从完整

SQL Server 2000中的完整备份、差异备份操作

在SQL Server 2000中,假定我们拥有一个数据库为:Test, 现在需要它每天19:00自动进行一次备份,并且以后一旦发生数据库错误,我们都可以通过备份文件将数据库恢复到任何一个备份过的时刻点. 备份步骤:1. 在“SQL Server企业管理器”中注册数据库所在的服务器,注意要使用sa用户名和口令,否则以后执行备份调度的时候,会出现权限不足,导致不能进行备份.2. 确保该服务器的SQL Server Agent服务是开启的,因为所有的调度都是通过该代理进行执行的.3. 在“SQL S

《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式

数据备份一直被认为数据库的生命,也就是一个DBA所要掌握的主要技能之一,本篇就是介绍SQL Server备份原则,SQL Server数据库分为数据文件和日志文件.为了使得数据库能够恢复一致点,备份不仅需要拷贝数据数据文件里的内容,还要拷贝日志文件里的内容.那么根据每次备份的目标不同,我们可以将备份分为数据备份和日志备份. 数据备份的范围可以是完整的数据库.部分数据库.一组文件或文件组.所以根据备份下来的数据文件的范围,又分为了完整数据库备份.文件备份和部分备份. 完整数据库备份 完整数据库备份

SQL Server 备份和还原全攻略

原文:SQL Server 备份和还原全攻略 一.知识点 完全备份: 备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件.(在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份,换言之,清除存档属性).完全备份也叫完整备份. 差异备份: 差异备份是针对完全备份:备份上一次的完全备份后发生变化的所有文件.(差异备份过程中,只备份有标记的那些选中的文件和文件夹.它不清除标记,即:备份后不标记为已备份文件,换言之,不清除存档属性). 增量备份: 增量备份是针对于上一次备份(无论是