SQL Server数据库事务日志存储序列
原文
原文:http://blog.csdn.net/tjvictor/article/details/5251351
如果你的数据库运行在完整或是批量日志恢复模式下,那么你就需要使用作业(job)来定期备份事务日志,保持你的事务文件大小处在一个可管理的范围。当你需要还原事务日志时,你就需要按照创建事务日志的顺序来恢复它们。你可以参考存在msdb..backupset表中的信息来确定还原文件的顺序,使用FirstLSN和LastLSN列的值作参考。当你备份时,这些备份信息就会存在backupset表中

只要序列处于维护状态下,你就可以使用对应的日志把数据恢复到任意恢复点上。不幸的是,有些实例的序列已经被损坏了。下面两种情况普通是引起损坏的原因:
- 数据库的恢复模型被切换到了简单(SIMPLE)后,再次被切换回完整或是批量日志。
- Backup log命令运行时,附带了TRUNCATE_ONLY/NO_LOG选项。
当上面两种情况发生时,你需要即可做一个数据库的完整备份,作为事务日志恢复的新的恢复点。那么你如何判断序列已经被破坏了呢?
在SQL Server 2000中,这确实有点麻烦。假如数据库恢复模型已经被更改了,或是备份时日志已经被截断了,那么当更改后,你第一次备份事务日志时,SQL Server 2000会显示如下输出:
There is no current database backup. This log backup cannot be used to roll forward a preceding database backup.
Processed 1 pages for database 'logtest', file 'logtest_log' on file 1.
BACKUP LOG successfully processed 1 pages in 0.078 seconds (0.019 MB/sec).
注意这仅仅是个消息。虽然备份依然会成功完成,但却不可用。因为这是个计划作业,所以你什么都看不到,不过当事务日志被截断时,在Windows事件日志中是相关警告日志的。。

注意:如果你正在使用SQL Server 2000,那么日志事务对于数据库是非常重要的,所以要在Windows事件日志中不间断的监控日志事务事件。
假如你既没有关注警告消息,也没有监控Windows事件日志,那么基本上你就是有一批不可恢复的事务日志备份。SQL Server不应该警告我们吗?不应该停止无效的备份吗?假如你正在使用SQL Server 2005,那么答案肯定是应该的,而且它也是这么做的。下面就是当日志备份序列被毁坏时显示的消息:
Server: Msg 4214, Level 16, State 1, Line 1
BACKUP LOG cannot be performed because there is no current database backup.
Server: Msg 3013, Level 16, State 1, Line 1
BACKUP LOG is terminating abnormally.
是不是好多了。总之,如果你正在使用SQL Server 2000,你需要关注上面提到两个警告事件,这两个事件会毁坏你的日志备份序列,使你的备份失效。
下面是一些通用操作来保证日志序列不被破坏:
- 数据库恢复模型可以从完整到批量日志,反过来也一样
- 执行数据库完整备份,差异备份可是文件/文件组备份
假如你有如下一个备份序列(F代表完整数据备份,T代表事务日志)
F1,T1,T2,T3,T4,T5,T6
现在假设你要恢复到T6时间点,如下的恢复序列会帮你达到目的:
F1,T1,T2,T3,T4,T5,T6
F2,T3,T4,T5,T6
F3,T5,T6
本文翻译自sqlbackuprestore,更多精彩内容请浏览http://www.sqlbackuprestore.com
SQL Server数据库事务日志存储序列的更多相关文章
- SQL Server数据库事务日志序列号(LSN)介绍
原文:http://blog.csdn.net/tjvictor/article/details/5251463 日志序列编号(LSN)是事务日志里面每条记录的编号. 当你执行一次备份时,一些 ...
- 第十七周翻译-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志
SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 作者:Tony Davis,2012/01/27 翻译:赖慧芳 译文: 该系列 本文是Stairway系列的一部分:SQL ...
- SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志(译)
SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志 作者:Tony Davis,2012/01/27 系列 本文是进阶系列的一部分:SQL Server中事务日志管理的步骤 当事情 ...
- 如何读懂SQL Server的事务日志
简介 本文将介绍SQL Server的事务日志中记录了哪一些信息,如何来读懂这些事务日志中信息.首先介绍一个微软没有公开的函数fn_dblog,在文章的接下来的部分主要用到这个函数来读取事务日志. f ...
- SQL SERVER的事务日志
1 基本介绍 每个数据库都具有事务日志,用于记录所有事物以及每个事物对数据库所作的操作. 日志的记录形式需要根据数据库的恢复模式来确定,数据库恢复模式有三种: 完整模式,完全记录事物日志,需要定期进行 ...
- SQL Server 数据库开启日志CDC记录,导致SQL Server 数据库日志异常增大
这几天单位的SQL Server业务数据生产库出现数据库日志增长迅速,导致最终数据无法写入数据库,业务系统提示"数据库事务日志已满",经过多方咨询和请教,终于将日志异常的数据库处理 ...
- SQL Server备份事务日志结尾(Tail)
原文:http://blog.csdn.net/tjvictor/article/details/5256906 事务日志结尾经常提交数据库未备份的事务日志内容.基本上,每一次你执行事务日志备份时 ...
- SQL Server 收缩事务日志的方法
由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005) Backup Log DataBaseName with no_ ...
- 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)
前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程, ...
随机推荐
- c# 生成项目或重新生成项目时报“Project not selected to build for this solution configuration”之解决办法
菜单->生成->配置管理器->给要生成的项目打钩
- JAVA之执行cmd命令
感言在前:时隔好久没有更新博客园了,忙东忙西也没忙出个什么之所以然来.回首过去一两个月,只能用“疲倦”两个字来形容,而且是身心疲惫.每天11.12个小时的工作我都没觉得烦,但是总是想克服却又很难克服的 ...
- Sql Server Row_Number() 学习
Row_Number(): row_number()主要是为选出的每一条记录按照一定的排序方式生成一个行序号. 语法: ROW_NUMBER ( ) OVER ( [ PARTITION BY val ...
- 北大ACM(POJ1003-Hangover)
Question:http://poj.org/problem?id=1003问题点:水题. Memory: 220K Time: 0MS Language: C++ Result: Accepted ...
- hexo资源--theme等
Hexo (https://github.com/hexojs/hexo) [3]hexo你的博客(http://ibruce.info/2013/11/22/hexo-your-blog/) [4] ...
- 【学习笔记】【C语言】第一个C程序
1.新建C语言程序 *打开Xcode *新建文件 *选择C语言程序 *输入程序名称 *选择存放路径 *创建完成后 2.也可以用终端来创建 通过指令来创建.c文件 3.编写代码 4. ...
- [javascript|基本概念|Object]学习笔记
对象:数据和功能的集合 创建对象:new 对象类型名称 e.g.: var o = new Object(); 或 var o = new Object(省略(),不推荐) 或 var o = {}( ...
- [NOIP2014]解方程
3732 解方程 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 输入描述 Input Descrip ...
- JavaScript ES7 中使用 async/await 解决回调函数嵌套问题
原文链接:http://aisk.me/using-async-await-to-avoid-callback-hell/ JavaScript 中最蛋疼的事情莫过于回调函数嵌套问题.以往在浏览器中, ...
- 将json转为复杂url参数
//json转url参数 var parseParam = function(param, key) { var paramStr = ""; if (param instance ...