首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储过程SQL Server的隔离级别?

存储过程SQL Server的隔离级别?
EN

Stack Overflow用户
提问于 2017-02-21 14:31:42
回答 2查看 10.4K关注 0票数 10

我想在我的过程中添加隔离级别,为此,我想从下面确认哪个是正确的格式:

尝试#1 -在调用存储过程之前设置隔离级别:

代码语言:javascript
复制
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

EXEC [sp_GetProductDetails] 'ABCD','2017-02-20T11:51:37.3178768'

尝试2-在存储过程中设置隔离级别:

代码语言:javascript
复制
CREATE PROCEDURE MySP AS
BEGIN
   SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
   BEGIN TRAN 
       SELECT * FROM MyTable
       SELECT * FROM MyTable2
       SELECT * FROM MyTable3

       COMMIT TRAN  
END

请提个建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-21 15:53:38

这两个版本都是“正确的”-它们只是做了不同的事情

  • 您的尝试#1设置该数据库和连接的隔离级别-这意味着,所选的隔离级别将用于任何将来的语句-直到您再次更改隔离级别
  • 您的尝试#2仅在存储过程内设置隔离级别-因此,一旦存储过程完成,数据库/连接级别上存在的隔离级别将再次恢复

所以这真的取决于你想做什么:

  • 是否为您当前与此数据库的连接将隔离级别设置为不同级别的?一般情况下为?将来的任何语句都将在此隔离级别下运行-->选择#1
  • 将单个存储过程的隔离级别设置为不同的设置-无论连接/数据库以前具有什么-然后使用#2
票数 16
EN

Stack Overflow用户

发布于 2017-08-07 13:01:05

ISOLATION LEVEL READ COMMITTED是SQL数据库的默认隔离。

尝试#2是设置ISOLATION LEVEL的良好做法。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42360215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档