我知道您通常会在桌面级别应用 WITH(NOLOCK),但假设您想要将15张桌子加在一起。是否有更简单的方法将 WITH(NOLOCK)应用于所有表,而无需在每个表名后写入它?
答案 0 :(得分:8)
您可以将transaction isolation level
设置为read uncommitted
:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT ...
这有效地将整个交易视为WITH (NOLOCK)
来自MSDN:
READ UNCOMMITTED
指定语句可以读取已被其他事务修改但尚未提交的行。
在READ UNCOMMITTED级别运行的事务不会发出共享锁,以防止其他事务修改当前事务读取的数据。 READ UNCOMMITTED事务也不会被独占锁阻止,这会阻止当前事务读取已被修改但未被其他事务提交的行。设置此选项后,可以读取未提交的修改,这些修改称为脏读。可以更改数据中的值,并且在事务结束之前,行可以在数据集中显示或消失。 此选项与在事务中所有SELECT语句中的所有表上设置NOLOCK具有相同的效果。这是隔离级别中限制最少的。