Sql Server 日志(四)

在完整恢复模式下,SQL Server将所有日志都记录在日志文件中,那么,SQL Server是怎样记录日志的呢?

先查看下日志文件里面所存的内容

   select * from sys.fn_dblog(null,null)

CurentLSN:当前日志序列号

Operation:操作类型

TransactionID:事务ID

Log Record Fixed Length:记录所占虚拟日志文件的固定长度

PreviousLSN:前一个日志序列号

AllocUnitID:修改的数据所属分配单元ID

AllocUnitName:修改的对象名称

Page ID:数据所在的页

Slot ID:数据所在页面的第几条行记录

CheckPoint Begin:CheckPoint 开始时间

CheckPoint End:CheckPoint 结束时间

Dirty Pages:脏数据页

Oldest Replicated Begin LSN:如果数据库配置复制,最老的复制LSN

Next Replicated End LSN:下一个复制LSN

Last Distributed End LSN:最新的分发LSN

Beginlog Status:开始记录事务日志的状态,这个状态表示现时能够正常记录事务日志

Begin Time:事务开始时间

Transaction Time:事务开始时间

End Time:事务结束时间

Transaction Begin:记录这个事务的begin transaction的时候的cureent LSN

Preplog Begin LSN:启动数据库前的前一个事务日志LSN

Prepare Time:准备启动数据库的时间

New Split Page:哪个数据页产生了页拆分

Rows Deleted:数据页有多少行被删除了

Description:描述这个事务是干什么的

-----------------------------------------------

常见Operation和Context


Operation


Context


解释


LOP_SET_BITS


LCX_DIFF_MAP


设置位图,资料: 差异(Differential)备份:只备份上次完整备份后,做修改的部分。备份单位是区(Extent)。意味着某个区内即使只有一页做了变动,则在差异备份里会被体现.差异备份依靠一个BitMap进行维护,一个Bit对应一个区,自上次完整备份后,被修改的区会被置为1,而BitMap中被置为1对应的区会被差异备份所备份。而到下一次完整备份后,BitMap中所有的Bit都会被重置为0

而这个BitMap在数据库第7页:

DCM页 差异变更(Differential Changed Map,DCM)页面他跟踪一个文件中的哪一个区在最新一次完整数据库备份之后被修改过。SQLSERVER用在增量备份时只对已发生数据变更的分区进行增量备份即可


LOP_BEGIN_XACT


事务开始


LOP_MODIFY_ROW


LCX_HEAP


修改堆表中的某一行记录


LOP_PREP_XACT


准备启动数据库


LOP_COMMIT_XACT


提交事务


LOP_MODIFY_ROW


LCX_BOOT_PAGE


修改数据库启动页


LOP_MODIFY_HEADER


LCX_PFS


修改PFS页的页头部信息


LOP_INSERT_ROWS


LCX_CLUSTERED


插入数据到聚集索引的索引页


LOP_INSERT_ROWS


LCX_INDEX_LEAF


插入数据到索引的叶子节点即数据页


LOP_FORMAT_PAGE


LCX_CLUSTERED


重新组织聚集索引


LOP_DELETE_SPLIT


LCX_CLUSTERED


删除聚集索引表的一行记录引起页拆分


LOP_MODIFY_HEADER


LCX_HEAP


修改堆表的某页的页头信息


LOP_BEGIN_CKPT


LCX_NULL


检查点开始


LOP_END_CKPT


LCX_NULL


检查点结束


LOP_SET_FREE_SPACE


LCX_PFS


修改PFS页设置那个数据页是空闲的


LOP_ROOT_CHANGE


LCX_CLUSTERED


聚集索引的根节点改变


LOP_INSERT_ROWS


LCX_HEAP


插入数据到堆表

----------------------------------------------------------------------------------------------------------------------------

在大容量日志模式下,日志不会记录对数据页的操作,当使用bcp,bulk insert,select into 等大容量日志操作的时候,像下图的修改数据和插入数据的记录在日志记录中找不到。

所以,在大容量日志模式下,插入速度才比较快。

时间: 2024-10-14 00:47:51

Sql Server 日志(四)的相关文章

SQL Server 日志和代理的错误日志

本文介绍的日志不是事务日志,而是SQL Server 日志和代理的错误日志,按照主体把错误日志分为SQL Server.SQL Server Agent.Database Mail,以及 Windows NT.SQL Server使用日志记录数据库引擎启动和运行过程中产生的信息,这些信息不一定是“错误”的消息,按照消息的严重程度,分为三个级别,分别是:信息(Information),警告(Warning)和错误(Error),SQL Server日志会按照消息发生的时间顺序记录消息.SQL Se

SQL Server日志文件庞大收缩方法(实测好用)

原文:SQL Server日志文件庞大收缩方法(实测好用) 这两个命令连续执行,间隔时间越少越明显(可多次运行),直到达到效果 --截断 BACKUP LOG CloudMonitor TO DISK='NUL' --收缩 DBCC SHRINKFILE('CloudMonitor_log') 以后就可以采用常规的定期备份日志(比如一小时一次)来防止日志文件无限增长. SQL Server日志文件庞大收缩并非易事, 文章中提到: 由于首日志.尾日志和空间重复利用的原因,当备份日志后产生了日志截断

SQL Server之 (四) ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号

SQL Server之 (四) ADO增删查改  登录demo  带参数的sql语句  插入自动返回行号 自己学习笔记,转载请注明出处,谢谢!---酸菜 1.什么是ADO.NET ADO.NET是一组类库,这组类库可以让我们通过程序的方式访问数据库,并以各种方式操作存储在其中的数据; ADO.NET是基于.NET FrameWork,与.NET FrameWork类库的其余部分是高度集成的 2.连接数据库的步骤 ①创建连接字符串 Data Source=XXX-PC; Initial Catal

SQL Server日志文件过大 大日志文件清理方法 不分离数据库

SQL Server日志文件过大    大日志文件清理方法 ,网上提供了很多分离数据库--〉删除日志文件-〉附加数据库 的方法,此方法风险太大,过程也比较久,有时候也会出现分离不成功的现象.下面的方式是不需要做数据库分离和附加操作的. SQL 2008收缩清空日志方法: 1.在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完整模式,一定必务要再改回完整模式,不然数据库就不支持时间点备份了.1).选择数据库–属性-选项-恢复模式–选择简单.2).收缩数据库后,再调回完整.2

SQL Server的四种隔离级别(转)

转自:https://www.cnblogs.com/cnxcfeng/articles/1162341.html SQL Server的四种隔离级别知识点整理,特别制作了流程图,方便以后查看! SET TRANSACTION ISOLATION LEVEL{ READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE } 一.未提交读READ UNCOMMITTED(脏读)意义:包含未提交数据的读.例如,在多用户环境下,

查看SQL Server日志 Part 1

曾经有朋友问我数据被删除了,不借助第三方工具能不能查是什么时候发生的. SQL Server提供了一个undocumented的函数fn_dblog可以让我们查看活动的transaction log. 语法如下: ::fn_dblog(@StartingLSN,@EndingLSN) 如果参数都为NULL默认是抓取所有的交易信息. 使用这个函数我们可以查询DML,DDL信息,比如数据删除,修改更新等等.下面我们来看一个数据更新的例子: create table test(namevarchar(

SQL SERVER 日志已满的处理方法 (转)

事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf.在 SQL Server 7.0 和 SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展.一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发.然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满.通常,在事务日志文件占尽可用磁盘空间且不能再扩展时,您将收到如下错误消息:Er

SQL Server中四类事务并发问题的实例再现(转)

本篇文章将用实例再现数据库访问中四类并发问题,希望能让初学者能对事务的并行性有进一步的理解. 首先,让我们先来了解一下并行问题以及事务隔离级别这两个概念.在数据库中,假设如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题.并发问题包括: 丢失或覆盖更新. 未确认的相关性(脏读). 不一致的分析(非重复读). 幻像读. 下面让我们稍花点时间来解释一下这四类问题:1.丢失更新当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题.每个事

如何清除sql server日志

1.打开查询分析器,输入命令 DUMP TRANSACTION 数据库名 WITH NO_LOG 2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了. 清除Log有两种方法: 1.自动清除法 开放数据库选项 Trunc Log on Chkpt,使数据库系统每隔一段时间自动清除Log.此方法的优点是无须人工干预,由SQL Server自动执行,并且一般