来自代码的 Sql 客户端事务与数据库控制的事务

Posted

技术标签:

【中文标题】来自代码的 Sql 客户端事务与数据库控制的事务【英文标题】:Sql client transactions from code vs database-controlled transactions 【发布时间】:2010-08-09 17:22:01 【问题描述】:

我一直在存储过程中完成事务,但现在我需要将一堆“动态”语句从针对sp_executesql 的代码执行到事务中。

在某些情况下,我特别需要READ UNCOMMITED 隔离级别(我知道那是做什么的,是的,这就是我需要的)。这是 SQL2008。

我的问题是:如果我使用隔离级别设置为IsolationLevel.ReadUncommitted 的SqlConnection 实例的BeginTransaction() 方法,是否会产生与执行具有READ UNCOMMITED 语句的存储过程相同的效果?

【问题讨论】:

【参考方案1】:

是的,会的。

SqlConnection 使用 SQL 本地客户端,并且对 BeginTransaction 的调用会导致将其发送到服务器:

SET TRANSACTION ISOLATION LEVEL <WHATEVER>; BEGIN TRANSACTION;

【讨论】:

以上是关于来自代码的 Sql 客户端事务与数据库控制的事务的主要内容,如果未能解决你的问题,请参考以下文章

聊聊Spring事务控制策略以及@Transactional失效问题避坑

SqlServer系列浅谈SQL Server事务与锁(上篇)

14 MySQL--事务&函数与流程控制

SQL- 基础知识梳理 - 事务与锁

JDBC 控制事务(MySQL为例)

SQL SERVER的锁机制——概述(锁与事务隔离级别)