当前位置:  数据库>sqlserver

SQL Server误区30日谈 第20天 破坏日志备份链之后,需要一个完整备份来重新开始日志链

    来源: 互联网  发布时间:2014-10-09

    本文导语:  误区 #20:在破坏日志备份链之后,需要一个完整备份来重新开始日志链 错误 事务日志备份会备份自上次事务日志备份以来所有的事务日志(如果从来没有过日志备份的话,那就从上一次完整备份开始)。有好几种类型的操作会中...

误区 #20:在破坏日志备份链之后,需要一个完整备份来重新开始日志链
错误

事务日志备份会备份自上次事务日志备份以来所有的事务日志(如果从来没有过日志备份的话,那就从上一次完整备份开始)。有好几种类型的操作会中断事务日志的连续性,也就是说除非重新开始新的日志链,SQL Server无法再进行日志备份。下面这几种操作都有可能引起日志链断裂:

由完整恢复模式或大容量事务日志恢复模式转为简单恢复模式
从数据库镜像进行恢复
备份日志时指定了NO_LOG 或 WITH TRUNCATE_ONLY(还好在SQL Server 2008中这个选项被取消了)

更多请看:post BACKUP LOG WITH NO_LOG - use, abuse, and undocumented trace flags to stop it

通过下面的例子对此进行阐述:

代码如下:

CREATE DATABASE LogChainTest;
GO
ALTER DATABASE LogChainTest SET RECOVERY FULL;
GO
BACKUP DATABASE LogChainTest TO DISK = 'C:SQLskillsLogChainTest.bck' WITH INIT;
GO
BACKUP LOG LogChainTest TO DISK = 'C:SQLskillsLogChainTest_log1.bck' WITH INIT;
GO
ALTER DATABASE LogChainTest SET RECOVERY SIMPLE;
GO
ALTER DATABASE LogChainTest SET RECOVERY FULL;
GO

结果是:
代码如下:

已为数据库 'LogChainTest',文件 'LogChainTest' (位于文件 1 上)处理了 168 页。
已为数据库 'LogChainTest',文件 'LogChainTest_log' (位于文件 1 上)处理了 2 页。
BACKUP DATABASE 成功处理了 170 页,花费 0.224 秒(5.916 MB/秒)。
已为数据库 'LogChainTest',文件 'LogChainTest_log' (位于文件 1 上)处理了 3 页。
BACKUP LOG 成功处理了 3 页,花费 0.121 秒(0.137 MB/秒)。

我首先创建了一个数据库,将其设置为完整恢复模式,这个是日志链的起点,然后转为简单恢复模式,再转为完整恢复模式。
下面我再尝试进行日志备份
代码如下:

BACKUP LOG LogChainTest TO DISK = 'C:SQLskillsLogChainTest_log2.bck' WITH INIT;
GO

则会得到如下报错信息:
代码如下:

消息 4214,级别 16,状态 1,第 1 行
无法执行 BACKUP LOG,因为当前没有数据库备份。
消息 3013,级别 16,状态 1,第 1 行
BACKUP LOG 正在异常终止。

SQL Server已经记录了我破坏日志链的操作以及与进行日志 备份无法备份自上次日志备份以来所有的日志,所以SQL Server不允许我进行日志备份。
这个误区是说此时就需要完整备份才能恢复日志链,但实际上,我只需要做一个差异备份(这个差异备份的跨度超过日志链断裂的间隙),代码如下:
代码如下:

BACKUP DATABASE LogChainTest TO DISK = 'd:Test_bakLogChainTest_log1.bck' WITH INIT, DIFFERENTIAL;
GO
BACKUP LOG LogChainTest TO DISK = 'd:Test_bakLogChainTest_log1.bck' WITH INIT;
GO

得到的结果:
代码如下:

已为数据库 'LogChainTest',文件 'LogChainTest' (位于文件 1 上)处理了 64 页。
已为数据库 'LogChainTest',文件 'LogChainTest_log' (位于文件 1 上)处理了 1 页。
BACKUP DATABASE WITH DIFFERENTIAL 成功处理了 65 页,花费 0.119 秒(4.267 MB/秒)。
已为数据库 'LogChainTest',文件 'LogChainTest_log' (位于文件 1 上)处理了 1 页。
BACKUP LOG 成功处理了 1 页,花费 0.052 秒(0.150 MB/秒)。

不得不说这种方式更Cool一些,因为你不再需要一个完整备份才能继续进行日志备份。
如果你的备份策略中包含了文件或是文件组的备份,你甚至只需要单个文件的差异备份就能继续进行日志备份。但前提是这个备份的跨度超过了断裂LSN的长度,当然这是更深的话题了。
又揭穿了一个误区!

    
 
 

您可能感兴趣的文章:

  • sql server 2008中备份集中的数据库备份与现有的xx数据库不同的解决方法
  • Sql Server 2000删除数据库备份文件
  • 有关sql server 2008 数据库自动备份作业的权限问题
  • 简单的SQL Server备份脚本代码
  • sql server中通过查询分析器实现数据库的备份与恢复方法分享
  • 如何实现用jsp将sql server 的数据备份出来!并指定存放路径!
  • 备份数据库的T-SQL语句
  • 设置sql server定期自动备份
  • 设定sql server定期自动备份数据库
  • Oracle中备份表的简单sql命令语句
  • linux下能调用*.sql备份的数据库数据么?
  • SQL Server中用于备份的语句
  • sql server 2005 自动备份脚本
  • 用t-sql语句完整备份数据库的例子
  • 一段脚本实现自动备份并保存最近几天的SQL数据库
  • 检验SQL Server备份的脚本
  • 通过SQL语句来备份,还原数据库
  • Sql2000数据库的备份文件恢复到Sql2005的方法
  • sql server 2000数据库备份还原的图文教程
  • sql server 2005 自动备份脚本一例
  • sql server日志收缩脚本及解决日志增长过快的问题
  • 如何减小Sql2005日志文件大小
  • sql语句实例 取得日志条目的sql语句
  • 基于SQL的日志分析工具 myselect
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • mysql通过查看跟踪日志跟踪执行的sql语句
  • SQL Server日志过大会影响查询结果
  • SQL Server 2008无日志文件如何使用MDF文件附加数据库
  • SQLServer日志清空语句(sql2000,sql2005,sql2008)
  • MS SQL SERVER 数据库日志压缩方法与代码
  • 修改数据库文件及日志文件增量的sql语句
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • SQL Server误区30日谈 第23天 有关锁升级的误区
  • SQL Server误区30日谈 第17天 有关页校验和的误区
  • SQL Server误区30日谈 第29天 有关堆碎片的误区
  • SQL Server误区30日谈 第25天 有关填充因子的误区
  • SQL Server误区30日谈 第8天 有关对索引进行在线操作的误区
  • SQL Server误区30日谈 第6天 有关NULL位图的三个误区
  • SQL Server误区30日谈 第5天 AWE在64位SQL SERVER中必须开启
  • SQL Server误区30日谈 第22天 资源调控器可以调控IO
  • SQL Server误区30日谈 第16天 数据的损坏和修复
  • SQL Server误区30日谈 第3天 即时文件初始化特性可以在SQL Server中开启和关闭
  • SQL Server误区30日谈 第21天 数据损坏可以通过重启SQL Server来修复
  • SQL Server误区30日谈 第10天 数据库镜像在故障发生后 马上就能发现
  • SQL Server误区30日谈 第27天 使用BACKUP WITH CHECKSUM可以替代DBCC CheckDB
  • SQL Server误区30日谈 第1天 正在运行的事务在服务器故障转移后继续执行
  • SQL Server误区30日谈 第9天 数据库文件收缩不会影响性能
  • SQL Server误区30日谈 第4天 DDL触发器就是INSTEAD OF触发器
  • SQL Server误区30日谈 第18天 有关FileStream的存储,垃圾回收以及其它
  • SQL Server误区30日谈 第11天 镜像在检测到故障后瞬间就能故障转移
  • SQL Server误区30日谈 第15天 CheckPoint只会将已提交的事务写入磁盘
  • SQL Server误区30日谈 第2天 DBCC CHECKDB会导致阻塞
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • NOSQL iis7站长之家
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3