0

我有一个.RDL我在 BIDS 中设计的报告,并已部署到我的报告服务器。报告在查看报告之前要求三个参数YearMonthCustomer ID。该报告效果很好,并且完全按照预期进行。

虽然我以前单独运行每个报告,因为有 2-3 个客户,但现在有 30 多个客户收到报告,所以我想切换到更自动化的履行方法来生成报告。在进行了一些研究之后,使用“Windows 文件共享”选项使用报表管理器创建“数据驱动订阅”(DDS)似乎为我提供了我需要的功能。

作为创建 DDS 的一部分,我创建了一个名为的表[Subscription],该表包含一行用于接收报告的每个客户,并具有以下列:

  • 客户ID
  • 文件名
  • 文件位置
  • 覆盖
  • 格式

...因此通过使用报表管理器中的 DDS 向导,我能够成功设置数据驱动订阅(链接到表中的各个列[Subscription]),为表中的每个客户创建一个新报告[Subscription],保存 [和如有必要,将其覆盖] 在我选择的 PDF 位置(在 中指定[Subscription].[FileLocation],或FileLocation每行的表格列),并每分钟运行一次(我计划最终将频率更改为每周一次)。

这完美无瑕,在我选择的目录中为我提供了一组新的 30 个报告,每个报告都有我在FileName表格列中指定的名称。正是我想要的。

问题是:当我更新表中的FileLocationor FileName(或任何东西,真的)时[Subscription]- 它不会立即获取更改。有时它甚至根本不接受它(例如,我将一位客户[ReportName]的列从更新为,因此应命名该客户的输出文件,而应将所有其他报告称为[无前缀]。但是客户 711622 的报告文件名保持不变!Report_711622SpecialReport_711622SpecialReport_711622Report_XXXXXSpecial

这几乎就像这项工作每天只查看它需要做的事情,然后[Subscription]直到我离开晚上才回去参考表格,然后当我早上回来时,它会捡起零钱。

由于我即将使用不同的报告将此流程扩展到大型客户群,因此我需要能够对[Subscription]表格进行编辑并让数据驱动订阅立即获取它们(如果不是立即,在至少有一个固定的时间间隔,我可以调整,这样我就可以 100% 知道什么时候会收到更改)。

有谁知道是什么导致我的滞后?如何更改它以便Subscription定期获取对表的更新?我在其他报告上创建新 DDS 时也遇到问题(按照上面概述的确切过程) - 我已经创建了订阅,每分钟,它说它们正在运行,并且输出的数量与客户的数量相匹配0 个错误,但我指定的驱动器中没有文件(或者我查看过的其他任何地方,就此而言)。

任何帮助将不胜感激!

4

2 回答 2

1

我认为答案在于 SSRS 使用的机制。有几个地方会出现“滞后”。

订阅实际上是一个 SQL 代理作业,它在事件表中创建一条记录。此表是 SSRS 检查以执行计划任务的队列。

从订阅创建事件记录到 SQL 读取它并开始为您的 DDS 创建数据集之间有一小段时间。DDS 数据集的创建也需要一些时间。此时,订阅将处于 Pending 状态。如果您在此期间更改数据中的任何内容,订阅仍将使用旧数据作为报告参数。所以很明显,在下一次计划运行之前,您不会注意到您的更改。

这让我想到了以下几点:如果订阅仍在运行并且下一个计划开始(很有可能,因为你的每分钟运行一次),引擎将不会执行它,而是等待下一个订阅计划,依此类推。所以这是另一种滞后的可能性 - 以及在某个计划分钟内丢失报告的原因。订阅按顺序处理报告,一次从您的 DDS 记录集中一行。同样,这需要一些时间。您还可以在订阅窗口中看到它显示:# of # 个已处理。

我建议您在执行期间查看数据库 ReportServer 中的 Event 表。ExecutionHistory 视图(有 3 个)也可能很有趣。计划运行显示为 RequestType = 1 并为每个报告生成一条记录。您可以查看订阅中运行的每个报告的确切时间和参数。您也许能够提取解决其他问题所需的数据。

编辑:这是 DDS 数据和事件的更详细指南 http://blogs.msdn.com/b/deanka/archive/2009/01/13/diagnosing-and-troubleshooting-subscriptions.aspx http://blogs。 msdn.com/b/deanka/archive/2010/02/16/troubleshooting-subscriptions-part-ii-using-the-report-services-trace-log-file.aspx

于 2013-11-19T19:08:50.917 回答
0

这个“双跳”问题会是我问题的根源吗?我很坚持这个! 双跳问题 - MSDN Knowledgecast

于 2013-12-05T17:11:26.153 回答