19

有没有办法告诉 sql server 使用(nolock)提示或存储过程中的每个选择?

将它添加到每个选择中是非常烦人的......

4

5 回答 5

19

正如其他人所说的那样,全局(无锁)是使用 READ UNCOMMITTED 完成的。

但是,在走这条路之前,值得先尝试 READ COMMITTED SNAPSHOT。这意味着您的读取不会被正在进行的插入/更新锁定,并且意味着数据不是脏的,只是过时的。

于 2009-06-23T23:40:22.160 回答
9

您想使用以下语法

设置事务隔离级别读取未提交

我通过查看位于此处的 NOLOCK 表提示找到了这一点。WITH(NOLOCK) 表提示相当于将隔离级别设置为 READ UNCOMMITTED。这是来自MSDN的片段:

NOLOCK 相当于 READUNCOMMITTED。有关详细信息,请参阅本主题后面的 READUNCOMMITTED。

于 2009-06-23T23:17:43.643 回答
7

我想这就是你要找的...

设置事务隔离级别读取未提交

于 2009-06-23T23:17:00.587 回答
4

发现这个……

如何强制 sql server 登录的 nolock 提示

似乎实现这一目标的最佳方法是发出

设置事务隔离级别读取未提交

还有什么想法???

ps

另一个相关的问题...

NOLOCK 与事务隔离级别

于 2009-06-23T23:19:10.410 回答
1

但是,您最终可能会得到不正确的数据。在 2005 年,最好使用快照隔离:“当快照隔离有帮助和伤害时” http://www.devx.com/dbzone/Article/32957

于 2009-06-24T03:24:07.123 回答