解释一下SQLSERVER事务日志记录
大家知道在完整恢复模式下,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语句就可以查看页面所在数据
1 USE [pratice] 2 GO 3 DBCC TRACEON(3604,-1) 4 GO 5 6 DBCC PAGE([pratice],1,289,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 20202020 20202020 † 8 00000020: 20202020 20202020 20202020 20202020 † 9 00000030: 20202020 20202020 20202020 20202020 † 10 00000040: 20202020 20202020 20202020 20202020 † 11 00000050: 20202020 20202020 20202020 2020202