我有一个.RDL
报告,我在BIDS中设计并部署到我的报表服务器。报告在查看报告之前会询问三个参数:Year
,Month
和Customer ID
。该报告运作良好,完全符合预期。
虽然我曾经单独运行每个报告,因为有2-3个客户,但现在有30多个客户收到报告,所以我想切换到更自动化的履行方法来生成报告。在做了一些研究之后,似乎使用Report Manager来创建一个"数据驱动的订阅" (DDS)使用" Windows文件共享"选项为我提供了所需的功能。
作为创建DDS的一部分,我创建了一个名为[Subscription]
的表,该表是一个表,其中包含接收报告的每个客户的一行,并包含以下列:
...所以通过在Report Manager中使用DDS向导,我能够成功设置数据驱动订阅(链接到[Subscription]
表中的各个列),为每个列创建一个新报告[Subscription]
表中的客户,将[并覆盖,如有必要]保存在我选择的位置作为PDF(在[Subscription].[FileLocation]
中指定,或在我的表的FileLocation
列中为每个每一分钟都会运行(我计划每周更换一次频率,最终)。
这完美无瑕,在我选择的目录中为我提供了一组新的30个报告,每个报告都有一个我在表格的FileName
列中指定的名称。正是我在寻找什么。
问题:当我在FileLocation
表格中更新FileName
或[Subscription]
(或其他任何内容)时,它不会#39;立即接受更改。有时甚至根本没有提取它(例如我将一个客户的[ReportName]
列从Report_711622
更新为SpecialReport_711622
,以便该客户的输出文件应命名为SpecialReport_711622
,而所有其他报告应调用Report_XXXXX
[no Special
前缀]。但客户711622的报告文件名称保持不变!
这几乎就像工作只看到它每天需要做的事情,然后在我离开之前不会再回过头参考[Subscription]
表,然后当我早上回来时它接受了改变。
由于我即将使用不同的报告将此流程扩展到大型客户群,因此我需要能够对[Subscription]
表进行编辑,并让他们通过数据驱动订阅获取它们立即(如果不是立即,至少我可以调整的固定时间间隔,以便我可以100%知道更改将被拿起)。
是否有人知道导致延迟的原因?如何更改它以便定期检索Subscription
表的更新?我也遇到了在其他报告上创建新DDS的问题(遵循上面概述的确切过程) - 我已经创建了订阅,每分钟都有,并且它说它们正在运行且输出数量与有0个错误的客户数量,但我指定的驱动器中没有文件(或者我在其他任何地方看过的文件)。
非常感谢任何帮助!
答案 0 :(得分:1)
我认为答案在于SSRS使用的机制。有几个地方可能会出现“滞后”。
订阅实际上是一个SQL代理作业,它在Event表中创建一条记录。此表是SSRS检查以执行计划任务的队列。
订阅创建事件记录的时刻和SQL读取它的时刻之间有一段时间,并开始为DDS创建数据集。 DDS数据集的创建也需要一些时间。在这段时间内,订阅将处于Pending状态。如果您在此期间更改了数据中的任何内容,则订阅仍将使用旧数据作为报表参数。很明显,在下一次计划的运行之前,你不会注意到你的变化。
这让我想到以下内容:如果订阅仍在运行且下一个计划启动(可能是因为您的每分钟运行),引擎将不会执行它,而是等待下一个订阅计划,并且等等。这是滞后的另一种可能性 - 并且导致某个计划分钟的报告丢失。订阅进程按顺序报告,一次从DDS记录集开始一行。同样,这需要一些时间。您还可以在订阅窗口中看到:#of#processed。
我建议您在执行期间查看数据库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
答案 1 :(得分:0)
这个“双跳”问题可能是我问题的根源吗?我很困惑这个! The Double-Hop Problem - MSDN Knowledgecast