Jon*_*ter 7 sql t-sql sql-server
我知道您通常会在桌面级别申请WITH(NOLOCK),但假设您想要将15张桌子加在一起.是否有更简单的方法将WITH(NOLOCK)应用于所有表而不必在每个表名后写入它?
您可以设置transaction isolation level为read uncommitted:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT ...
Run Code Online (Sandbox Code Playgroud)
这有效地将整个交易视为一个 WITH (NOLOCK)
来自MSDN:
READ UNCOMMITTED
指定语句可以读取已被其他事务修改但尚未提交的行.
在READ UNCOMMITTED级别运行的事务不会发出共享锁,以防止其他事务修改当前事务读取的数据.READ UNCOMMITTED事务也不会被独占锁阻止,这会阻止当前事务读取已被修改但未被其他事务提交的行.设置此选项后,可以读取未提交的修改,这些修改称为脏读.可以更改数据中的值,并且在事务结束之前,行可以在数据集中显示或消失.此选项与在事务中所有SELECT语句中的所有表上设置NOLOCK具有相同的效果.这是隔离级别中限制最少的.
| 归档时间: |
|
| 查看次数: |
3350 次 |
| 最近记录: |