从读取未读取的数据库事务级别还原数据库交易级别的正确方法



我必须从过度更新的表中获取数据。肮脏的阅读对我来说不是问题。我决定在存储过程中使用读书。

然后我在选择之前添加了此行:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

我了解到,与Nolock不同,此代码范围是连接的。我听说您的工作完成后应该将其更改为默认值吗?

我只需要添加

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

线的结尾?我在网上找不到任何示例,在工作后,隔离级别会更改。有例子吗?

一次只能设置一个隔离级别选项之一,,它一直设置为该连接,直到明确更改为为止。在交易中执行的所有读取操作均根据规则的规则针对指定的隔离级别进行操作

...

如果您在存储过程或触发器中发布设置事务隔离级别,则当对象返回控制对象时,当对象返回控制对象时,隔离级别将重置为有效的级别。,如果您,如果您将可重复的读数设置为批处理,然后批次调用一个存储过程,该过程将隔离级设置为可序列化,隔离级设置将恢复为可重复的读取,当存储过程返回控件返回到批处理。

https://msdn.microsoft.com/en-us/library/ms173763.aspx

最新更新