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