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

问题描述 投票:0回答:1

SQL Server 2014

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

所以,我不明白为什么报告没有按计划完成。系统似乎确认报告已正确安排,但系统似乎未按计划运行。我还可以遵循其他任何故障排除步骤吗?

更新(截图):

enter image description here

sql-server reporting-services ssrs-subscription
1个回答
1
投票

经过我们在评论中的讨论,我猜想有人想将原来的订阅工作重命名为人类可读的名称,并且在他离开公司之前没有告诉你。要找到该作业,您当然可以浏览SQL Server代理的作业列表,看看是否可以找到名称与您的报告/订阅有关的作业。如果这还不够,请打开 SSMS 中的作业活动监视器(在 SQL Server 代理下)并查找上次在 8 月 1 日电子邮件发出时执行的作业。如果这不成功并且有太多作业需要手动完成,我建议执行以下操作:

  • 在 ReportServer 数据库的 Catalog 表中找到报告的 ItemID(使用 PathName 来标识您的报告)。
  • 在 ReportServer 数据库的 Subscriptions 表中找到订阅的 SubscriptionID,使用报告的 ItemID 筛选 Report_OID 列。

然后,在

msdb
数据库中使用如下查询,在 SQL Server 代理的作业步骤中找到此 <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 日运行,两者都使用像

EXEC dbo.AddEvent @EventType='TimedSubscription', @EventData='<SubscriptionID>'
这样的 jobstep 命令在 ReportServer 数据库中执行(使用您的
<SubscriptionID>
)。做任何适合第二份工作的事情。

© www.soinside.com 2019 - 2024. All rights reserved.