SQL Server 事务与并发控制详解
1. 分布式与本地事务
分布式事务语法也涵盖了本地事务。设置配置选项 REMOTE PROC TRANS
会自动将 BEGIN TRANSACTION
命令升级为 BEGIN DISTRIBUTED TRANSACTION
命令。如果经常使用分布式事务,这个设置很有用。若未设置该选项,远程命令会执行,但不会成为当前事务的一部分。
2. 显式与隐式事务
2.1 自动提交事务
每个 SQL 语句都在事务中执行。即使没有使用 COMMIT TRANSACTION
语句显式开启事务,SQL Server 也会在每个语句开始时自动开启一个新事务,并根据是否发生错误来提交或回滚。这就是自动提交事务。
2.2 隐式事务设置
SQL Server 提供了 SET IMPLICIT_TRANSACTIONS
设置来改变自动提交事务的行为。当该设置开启,且执行上下文不在使用 BEGIN TRANSACTION
显式声明的事务中时,执行以下命令会自动(逻辑上)执行 BEGIN TRANSACTION
: ALTER TABLE
、 FETCH
、 REVOKE
、 CREATE
、 GRANT
、 SELECT