我正在为报告构建存储过程,我正在使用(NOLOCK)所有select语句。
我正在处理的方案没有锁定要求。
我正在考虑更改存储过程顶部的TRANSACTION ISOLATION LEVEL,并避免向所有select语句添加(NOLOCK)。当我将它设置在商店程序的顶部时,是否存在与(NOLOCK)等效的TRANSACTION ISOLATION LEVEL?
答案 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