1

我的前辈告诉我,默认情况下执行 SQL 查询不会锁定表。

但是我的 SSRS 报告出现了一些问题,似乎在锁定和出错方面遇到了一些问题。

我做了一些谷歌搜索,但没有找到任何东西。

只是寻找确认 SSRS 报告实际上会锁定任何正在查询的表吗?

是否有任何 MSDN 文档专门记录了这种行为?

4

2 回答 2

5

SSRS 不会自行锁定任何内容。锁定将由嵌入在报告中的查询驱动。没有人可以回答这个问题,但您可以查看报告和使用的查询,然后查看它们是否锁定表。

通常查询会锁定表中的数据,而不是表。一致、正确的报告绝对需要锁定。不要屈服于添加 NOLOCK 提示的谬论并收工,得到不正确的结果

如果您看到由报告引起的生产争用,那么有很多解决方案。使用可用性组数据库快照备用日志传送服务器将报告卸载到只读服务器。另一种方法是启用行版本化隔离级别,如 SNAPSHOT

于 2012-09-11T10:08:58.010 回答
0

对于来自 SSRS 的直接选择语句,肯定会锁定表。

您可以使用 NOLOCK 并编写一个特定查询,其中包含要在报告中显示的所需列。

在这里,您的选择查询不能有“*”,那里有列名。

于 2012-09-11T09:20:17.287 回答