SSRS:报告订阅按非周期计划运行

时间:2018-08-03 20:49:50

标签: sql-server reporting-services

SQL Server 2014

我有一个共享的季度报告计划,计划于1月,4月,7月和10月1日发布。但是,报告于8月1日发布。我检查了报表服务器,并确认未将计划设置为在8月运行,但是实际的计划表显示报表确实在8月1日运行。在SQL Agent作业历史记录中,仅运行一次,该运行是8月1日,由服务帐户执行。订阅显示下一个运行日期是10月1日。

因此,我不知所措,为什么报告未按计划进行。系统似乎确认报告已正确安排,但系统似乎已超出计划。我还可以执行其他任何故障排除步骤吗?

更新(屏幕截图):

enter image description here

1 个答案:

答案 0 :(得分:1)

在评论中我们进行讨论之后,我想有人想过将要订阅的原始作业重命名为人类可读的名称,并且在离开公司之前没有告诉您。要找到该作业,您当然可以遍历SQL Server Agent的作业列表,并查看是否可以找到一个名称与报告/订阅有关的作业。如果这还不够,请在SSMS(在SQL Server Agent下)中打开 Job Activity Monitor (工作活动监视器),并查找最后一次在电子邮件发出时于8月1日执行的作业。如果这样做不成功,并且手动进行的工作太多,建议您执行以下操作:

  • 在ReportServer数据库的目录表中找到报告的 ItemID (使用 Path Name 来确定您的报告)。
  • 在ReportServer数据库的 Subscriptions 表中找到您的订阅的 SubscriptionID ,并使用 ItemID < / em>。

然后,在 msdb 数据库中使用类似的查询,在SQL Server Agent的作业步骤中找到此<SubscriptionID>

SELECT j.[name] AS job_name, s.step_name
FROM dbo.sysjobs j
  INNER JOIN dbo.sysjobsteps s ON j.job_id = s.job_id
WHERE s.command like '%<SubscriptionID>%'

(用您的订阅的 SubscriptionID 替换<SubscriptionID>)。

我猜想您将通过该查询找到(至少)2个工作,一个与您的季度计划有关,一个计划于8月1日运行,其中两个都与在ReportServer中执行的工作步骤命令EXEC dbo.AddEvent @EventType='TimedSubscription', @EventData='<SubscriptionID>'类似数据库(使用您的<SubscriptionID>)。做第二件事是合适的。