确定锁定哪些表

时间:2011-01-24 18:07:10

标签: sql sql-server reporting-services

我必须遵循问题。我有一个应用程序,用户可以登录并做一些事情,如添加新项目。我还在Reporting Services中有统计信息。问题是统计是耗时的,当它被执行时,用户不能制作新的项目。在我的sql查询统计信息中,我有所有由WITH nolock语句修饰的select语句。但是,我可以看到一些表使用Activity Monitor锁定。我看到它们被物品标签锁定是否正确?如何确定哪些表被锁定? 当我使用以下语句时:

SELECT * FROM MyTable WITH (nolock)

我也可以看到这个查询锁定MyTable表。请帮我。

1 个答案:

答案 0 :(得分:0)

不要使用NOLOCK。 Dirty reads are inconsistent reads

改为使用SNAPSHOT ISOLATION。然后,您将获得两全其美:一致性读取无锁定。从查询中删除所有锁定提示,然后启用读取已提交的快照:

ALTER DATABASE [<dbname>] SET READ_COMMITTED_SNAPSHOT ON