3.事务和锁

一.事务

  1.BEGIN TRAN: 事务的开始,指定事务的起始点。

  2.COMMIT TRAN: 事务的提交,是完成事务的终点。

  3.ROLLBACK TRAN: 返回到事务的起点或者保存点,期间任何语句都会被回滚。

  4.SAVE TRAN: 保存事务。本质是创建某种事情的书签,书签被创建后,就可以在回滚操作中引用它。这样可以回滚到代码中所希望的某个准确位置。重要的是,保存点是在ROLLBACK操作中被清除。例如,即使保存了5个保存点,一旦执行ROLLBACK,这些保存点就都消失了。

二.SQL Server日志的工作原理

  1.检查点:数据库的常规操作中,大多数所进行的操作都被“登记”到事务日志中,而不是直接写入到数据库中。检查点是一个周期性操作,它强制将当前在使用的数据库中的所有脏页写到磁盘上。脏页是在被读入到缓存中之后又被修改了的日志或数据页,而该修改还没有写入到磁盘上。没有检查点,日志会填满或使用所有可用的磁盘空间。

  如下情况下检查点可以被发布:

    (1).通过一条手工的语句--使用CHECKPOINT命令;

    (2).在常规的服务器关闭过程中(除非使用了WITH NOWAIT选项);

    (3).在改变任何数据库选项时;

    (4).当简单恢复(Simple Recovery)选项被使用,并且日志空间已经占用了70%时;

    (5).当从上一检查点以来的日志数据(通常称作日志的活动部分)超过了在恢复间隔(Recovery Internal)选项中所设置的时间期限内服务器可以恢复的大小。

 

  2.隐式事务(implicit trancation)

  隐式事务不需要BEGIN TRAN语句,相反,它在第一条语句处自动开始。因此你就可以继续工作,直至COMMIT TRAN或ROLLBACK TRAN语句。下一个事务从下一条语句开始。

  隐式事务在SQL Server 2005中默认情况下是关闭的(并且连接处于自动提交事务模式),可以使用如下命令来打开该选项:SET IMPLICIT_TRANSACTIONS ON。

  隐式事务选项只会对当前的连接产生影响--对任何其他的用户来说该选项仍然是关闭的,除非他们都手动执行了SET命令。

 

 

posted on 2009-03-02 01:48  舞月闻笛  阅读(153)  评论(0)    收藏  举报

导航