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

Sql server SSRS:报告订阅按非周期计划运行,sql-server,reporting-services,Sql Server,Reporting Services,SQL Server 2014 我有一个共享的季度报告时间表,计划在1月1日、4月1日、7月1日和10月1日发布。但是,报告在8月1日发布。我检查了报表服务器,确认计划没有设置为8月运行,但实际的计划表显示报表确实在8月1日运行。在SQL代理作业历史记录中,只有一次运行,即8月1日的运行,由服务帐户执行。订阅说下一个运行日期是10月1日 因此,我不明白为什么报告没有如期完成。系统似乎确认报告计划正确,但系统似乎已超出计划。是否有其他故障排除步骤可供我遵循 更新(屏幕截图): 在我们在评论中讨论之

SQL Server 2014

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

因此,我不明白为什么报告没有如期完成。系统似乎确认报告计划正确,但系统似乎已超出计划。是否有其他故障排除步骤可供我遵循

更新(屏幕截图):


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

  • 在ReportServer数据库的目录表中查找报表的ItemID(使用路径和名称标识报表)
  • 在ReportServer数据库的Subscriptions表中查找订阅的SubscriptionID,并使用报表的ItemID筛选报表OID列
然后,在msdb数据库中,使用类似这样的查询,在SQL Server Agent的作业步骤中查找此

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>%'
选择j.[name]作为作业名称,s.步骤名称
来自dbo.sysjobs j
j.job\u id=s.job\u id上的内部联接dbo.sysjobs步骤s
其中s.command类似于“%”
(用订阅的SubscriptionID替换


我猜,通过此查询,您将发现(至少)2个作业,一个是您的季度计划,另一个是计划在8月1日运行的作业,这两个作业都使用了jobstep命令,如
EXEC dbo.AddEvent@EventType='TimedSubscription',@EventData='
,在ReportServer数据库中执行(使用您的
)。对第二份工作做任何合适的事情。

请添加一个(或多个)时间表的截图。@WolfgangKais我已经更新了我的帖子,提供了时间表的截图。这个时间表不会像你在原始帖子中所说的那样在12月1日运行,所以我想还有另一个时间表,这就是我为什么写“或时间表”的原因@Wolfgangkai只是想澄清一下,我说它是在8月1日运行的,而不是12月1日。我已确认订阅按季度计划运行。是否有其他方法使报告自动运行;这是一个服务器错误;或者是一个人在运行它?是的,你说它在8月1日运行,但你也说它计划在12月1日运行。您说服务帐户运行了该作业,因此可能存在执行此作业的恶意其他作业。或者有人在玩系统时钟。我不认为这是一个bug,我认为您有一个对手。我尝试了第二个查询,但对于给定的SubscriptionID,结果为零。我试着查看了一下数据,但Ops支持技术人员没有太多时间给我,不幸的是,我甚至没有生产中的基本读取权限来确认。没有权限和支持时间,我被卡住了。我会将此标记为已回答,以感谢您的努力。谢谢。@JWeezy非常感谢,我希望特权用户能尽快抽出时间支持您,当他支持您时,请告诉我结果。