日期:2014-05-17  浏览次数:20503 次

事务与日志的问题?
SQL Server中,是不是:
begin transaction
。。。
commit
这整个才算一个事务,日志里就是记录事务的所有操作?
那么单独的一条insert、delete或者update语句算是一个事务吗?日志里是不是也要记录?

------解决方案--------------------
sql server 的事务,具体可以分为2种,

一种就是显式事务:
begin transaction
。。。
commit
就是必须得用这种形式

第二种就是单独一个insert、delete或者update语句 也是事务。

这两种都会记录到日志中的
------解决方案--------------------
你说的begin tran commit是显式事务,

单独一句的insert delete,update是隐式事务,也就是说运行完成后自动提交,不需要明确地控制
隐式事务当然也记录日志,跟显式事务是一样的。

关于事务的更多内容,这里有一篇文章写的不错,可以参考
http://www.cnblogs.com/rush/archive/2011/12/11/2284262.html
------解决方案--------------------
与当前连接的事务模式有关,set implicit_transactions on/off
 当set implicit_transactions off时,则使连接恢复为自动提交事务模式.(默认情况) 
 当set implicit_transactions on时,执行insert、delete或update语句后需commit或rollback.

参考 http://msdn.microsoft.com/zh-cn/library/ms187807(v=sql.105).aspx