对于所有select语句,TRANSACTION ISOLATION LEVEL与(NOLOCK)等效的是什么?

时间:2016-10-27 17:41:13

标签: sql-server tsql locking

我正在为报告构建存储过程,我正在使用(NOLOCK)所有select语句。

我正在处理的方案没有锁定要求。

我正在考虑更改存储过程顶部的TRANSACTION ISOLATION LEVEL,并避免向所有select语句添加(NOLOCK)。当我将它设置在商店程序的顶部时,是否存在与(NOLOCK)等效的TRANSACTION ISOLATION LEVEL?

1 个答案:

答案 0 :(得分:1)

交易隔离级别READ UNCOMMITTED

  

指定语句可以读取已修改的行   其他交易但尚未提交。运行的交易   READ UNCOMMITTED级别不会发出共享锁以防止其他   来自修改当前事务读取的数据的事务。读   独占锁也不会阻止UNCOMMITTED事务   会阻止当前事务读取已经存在的行   已修改但未由其他事务提交。当这个选项是   设置,可以读取未提交的修改,即   叫脏读。可以更改数据中的值,也可以更改行   在事务结束之前在数据集中出现或消失。   此选项与在所有表中设置NOLOCK具有相同的效果   事务中的SELECT语句。这是限制性最小的   隔离级别。

注意:这不是推荐的隔离级别,因为这可以允许脏读

如果您想单独将ISOLOATION LEVEL设置为SP,请尝试更改SP

CREATE PROCEDURE PRC_SP AS
BEGIN

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

--your statements 

END