解释一下SQLSERVER事务日志记录
http://www.cnblogs.com/lyhabc/archive/2013/07/16/3194220.html 大家知道在完整恢复模式下,SQLSERVER会记录每个事务所做的操作,这些记录会存储在事务日志里,有些软件会利用事务日志来读取 操作记录恢复数据,例如:log explorer 那么事务日志记录怎麽查看,里面都记录了些什么? 打开可以利用下面SQL语句来查看所在数据库的事务日志记录 1 USE [GPOSDB] --要查看事务日志记录的数据库 2 GO 3 SELECT * FROM sys].fn_dblog](NULL,NULL) ? 事务日志记录里很多东西可以看的,里面记录了非常详细的数据库活动信息 我这里只介绍一些重要的需要知道的字段,其他字段由于本人能力有限而且觉得其他字段不是很重要就不介绍了 CurrentLSN:当前LSN号,事务日志中的每个记录都由一个唯一的日志序列号 (LSN) 标识。LSN 是这样排序的:如果 LSN2 大于 LSN1, 则 LSN2 所标识的日志记录描述的更改发生在日志记录 LSN1 描述的更改之后 MSDN解释:http://msdn.microsoft.com/zh-cn/library/ms190411(v=SQL.90).aspx Operation:当前LSN所做的操作 Context:操作的上下文 TransactoinID:事务ID号 Log Record Fixed Length:LSN记录的所占虚拟日志文件的固定长度 Previous LSN:前一个LSN号 -------------------------------------------------------------------------------------------------------------- AllocUnitID:修改的那条数据所属分配单元ID AllocUnitName:修改了数据的表名 Page ID:0001:00000121 转换成十进制:289??? 所以查看pageid为289页? DBCC PAGE([pratice],1,289,3) Slot ID:数据所在数据页面的第几条记录 PartitionID:数据所在数据页面的所在分区ID
如上图,修改数据的表名是Insert_Test,Page ID是0001:00000121?转换为十进制为289? Slot ID是6(即数据页的第6条记录) 通过下面SQL语句就可以查看页面所在数据 pratice] DBCC TRACEON(3604,-1) 4 5 6 DBCC PAGE(],0)">1,0)">289,0)">3) 7 GO 1 Slot 6 Offset 0x552 Length 211 2 3 Record Type = PRIMARY_RECORD Record Attributes = NULL_BITMAP 4 Memory Dump @0x0A2AC552 5 6 00000000: 1000d000 3f080000 61616120 20202020 ?....?...aaa 7 00000010: 20202020 20202020 ? 8 00000020: 9 00000030: 10 00000040: 11 00000050: 12 00000060: 13 00000070: 14 00000080: 15 00000090: 16 000000A0: 17 000000B0: 18 000000C0: 19 000000D0: 0200fc???????????????????????????????... 20 21 Slot 6 Column 0 Offset 0x4 Length 4 22 23 id = 2111 24 25 Slot 1 Offset 0x8 Length 200 26 27 name = aaa
-------------------------------------------------------------------------------------------------------- Checkpoint Begin:Checkpoint开始时间
Checkpoint Begin DB Version:当前数据库版本 SQL2005是611? SQL2012是706
Checkpoint End:checkpoint的结束时间,这个时间肯定在Checkpoint Begin的下一条事务日志记录的位置
Minimum LSN: 这个第一个日志记录的日志序列号 (LSN),称为最小恢复 LSN (MinLSN) Dirty Pages:脏的数据页
Oldest Replicated Begin LSN:如果数据库配置复制的话,那么最老的复制起始LSN Next Replicated End LSN:下一个复制结尾LSN Last Distributed End LSN:最新的分发结尾LSN SPID:执行当前操作的进程ID Beginlog Status:开始记录事务日志的状态,这个状态表示现时能够正常记录事务日志 Begin Time:事务开始时间
Transaction Name:事务名称 End Time:事务结束时间 Transaction Begin:记录这个事务的begin transaction的时候的cureent LSN
Master DBID:显示当前master数据库的DBID Preplog Begin LSN:启动数据库前的前一个事务日志LSN Prepare Time:准备启动数据库的时间
New Split Page:哪个数据页产生了页拆分 Rows Deleted:数据页有多少行被删除了
Description:描述这个事务是干什么的,有时候事务名称不一定就是他所做的操作名称, 比如这里碰巧事务名和描述都是CREATE TABLE 如果你为这个事务命名的话,那么只能看Description列看这个事务是做什么的
-------------------------------------------------华丽的分割线------------------------------------------------------------------- ?现在解释一下 一些常见operation和context,一些不常见的我也不知道 ,呵呵o(∩_∩)o DCM页的资料:http://www.cnblogs.com/lyhabc/archive/2013/01/21/2870392.html |