我必须遵循问题。我有一个应用程序,用户可以登录并做一些事情,如添加新项目。我还在Reporting Services中有统计信息。问题是统计是耗时的,当它被执行时,用户不能制作新的项目。在我的sql查询统计信息中,我有所有由WITH nolock语句修饰的select语句。但是,我可以看到一些表使用Activity Monitor锁定。我看到它们被物品标签锁定是否正确?如何确定哪些表被锁定? 当我使用以下语句时:
SELECT * FROM MyTable WITH (nolock)
我也可以看到这个查询锁定MyTable表。请帮我。
答案 0 :(得分:0)
不要使用NOLOCK。 Dirty reads are inconsistent reads。
改为使用SNAPSHOT ISOLATION。然后,您将获得两全其美:一致性读取和无锁定。从查询中删除所有锁定提示,然后启用读取已提交的快照:
ALTER DATABASE [<dbname>] SET READ_COMMITTED_SNAPSHOT ON