0

当我更喜欢WITH (NOLOCK)在特定的大型存储过程中的所有 SQL 查询中使用时,是否有一种通用的方法可以将它用于所有特定的存储过程语句,或者我应该将WITH (NOLOCK)其用于每个单独的查询?

4

2 回答 2

9

您可以设置事务隔离级别

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED

但是,不要忘记 NOLOCK 意味着您的查询可能会返回脏数据或重复数据,或者完全丢失数据。如果它适合您,我建议您研究 READ_COMMITTED_SNAPSHOT 数据库选项,以允许您在返回具有一致结果的查询时避免锁定问题。

于 2012-04-08T12:09:05.870 回答
4

您想使用以下语法:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

我通过查看位于此处的 NOLOCK 表提示找到了这一点:http: //msdn.microsoft.com/en-us/library/ms187373.aspx。WITH(NOLOCK) 表提示相当于将隔离级别设置为 READ UNCOMMITTED。这是来自 MSDN ( http://msdn.microsoft.com/en-us/library/ms187373.aspx )的片段:

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

于 2012-04-08T12:16:35.357 回答