SQL自动事务、隐藏事务、显式事务,以及.net中的关于事务
http://www.cnblogs.com/procoder/archive/2009/10/06/1578346.html
参考:
SQL Server 2008 的事务类型
1.自动提交事务 Autocommit Transactions
这是SQL Server默认的事务类型,每一条单独的SQL语句(SQL statement)都是单独的一个事务,语句执行完毕后自动提交。调用方不需要手工控制事务流程。
2.显示事务 Explicit Transactions
调用方需要调用API或者使用T-SQL的BEGIN TRANSACTION 语句来打开事务。需要调用COMMIT 或者 ROLLBACK TRANSACTION 来提交或者回滚。
3.隐式事务 Implicit Transactions
使用SET IMPLICIT_TRANSACTIONS ON把事务模式变成隐式模式。调用方不需要执行BEGIN TRANSACTION 语句来打开事务。数据库引擎执行到SQL语句的时候自动打开事务。调用方需要调用COMMIT 或者 ROLLBACK TRANSACTION 来提交或者回滚。当数据库引擎执行下一个SQL语句时又自动打开一个新事务。
参考:Controlling Transactions (Database Engine)
PB:中autocommit设置成false是时启动的Emplicit Transactions事务,一个事务接着一个事务形成事务链(可以通过sql profiler看到IMPLICIT_TRANSACTIONS ON设置).
.Net中所谓的隐式事务(TransactionScope) 显示事务(CommittableTransaction),跟上面SQL2008的事务讲的是不同的概念,因为通过sql profiler只看到如下设置:
-- network protocol: LPC
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language 简体中文
set dateformat ymd
set datefirst 7
set transaction isolation level read committed