2

在工作中,用户非常乐意使用 Reporting Services 的报表生成器生成自己的报表。

但是,唉,它生成的查询效率非常低,而且它们不使用“WITH (NOLOCK)”——这会减慢每个人的速度。

这些报告确实需要使用最新数据运行 - 无法卸载到报告服务器。而且由于它们查询非常具体、详细的数据,因此超立方体在这里毫无用处。

所以问题是:

有没有办法配置报表生成器的数据模型,以便它生成的查询在查询表时始终使用“WITH (NOLOCK)”?

4

2 回答 2

6

NOLOCK 不是解决方案。脏读是不一致的读。您的总数将被取消,您的报告将不平衡,并且您通常会产生垃圾汇总数据。使用快照隔离来防止报告阻止更新并防止更新阻止报告:

ALTER DATABASE ... SET READ_COMITTED_SNAPSHOT ON;

有关详细信息,请参阅数据库引擎中基于行版本控制的隔离级别

于 2010-12-22T20:44:55.427 回答
4

创建视图作为报表的数据源,并添加with (nolock)到视图的 select 语句中的所有表中。

于 2010-12-22T20:03:52.357 回答