链接到SQL Server时,什么可能导致MS Access中的报告速度减慢?

时间:2015-12-09 23:34:51

标签: sql sql-server ms-access reporting

我正在将Access应用程序的表从Access文件移动到SQL Server。原始应用程序有一个前端文件,其中包含一个链接到的数据文件。数据文件存在于网络驱动器上。我现在使用ODBC连接将前端文件链接到SQL Server。

所有表格似乎都有效。但是,有两份报告非常缓慢。在旧配置中,报告将在几秒钟内加载。

但是,在新版本中,它们可能需要几分钟。这些报告由多个子报告组成,这些子报告具有自己的数据集以及主报告的数据集。我已经完成了每个查询并进行了调整,因此每个查询运行所需的时间不到一秒。但是,当我尝试运行整个报告时,我仍然有延迟。

我已经使用链接表了很多。但是,访问方面的报告对我来说是相当新的。与链接文件相比,链接表的报告是否有任何原因?报告中的子报告是否有良好的做法可以加快加载时间?

1 个答案:

答案 0 :(得分:3)

这种情况经常发生。当然,当使用Access与JET / ACE(文件后端)时,应用程序可以对如何连接数据做出“更好”的选择。

使用SQL Server时,Access将主报表和子报表视为来自不同数据源的单独表。因此Access通常在将数据加入到一起时做得相当糟糕。并且报告经常报告经常重新查询和重新加载部分数据(比通常更多),然后Access中从SQL服务器中提取数据的缺点真正显现出来。 (Access很难将父表连接到sup报告中的子表。)

最简单(也是最少量的更改)是将用于主报表(和子报表)的查询更改为sql server上的视图。然后,您可以从Access链接到这些视图(它们在Access中显示为标准表)。然后,您将基于此视图的主报告(而不是查询)。并为子报告做同样的事情。这种方法并不是最好的,但它应该能够显着改进,特别是如果主报表是连接多个表的查询,并且子报表也基于基于多个表的查询。

以上是最少量的工作,因为报告中使用的过滤器和where子句等应继续运行而不更改前端应用程序。