【问题标题】:SSRS: Report subscription ran on off-cycle scheduleSSRS:报告订阅按非周期计划运行
【发布时间】:2018-08-03 20:49:50
【问题描述】:

SQL Server 2014

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

所以,我不明白为什么报告会按计划进行。系统似乎确认报告已正确安排,但系统似乎已按计划运行。是否有任何其他故障排除步骤可供我执行?

更新(截图):

【问题讨论】:

  • 请添加时间表(或时间表)的屏幕截图。
  • @WolfgangKais 我更新了我的帖子以提供时间表的屏幕截图。
  • 如您在原始帖子中所说,此时间表不会在 12 月 1 日运行,所以我想还有另一个时间表,这就是我写“或时间表”的原因。
  • @WolfgangKais 澄清一下,我说它是在 8 月 1 日运行的,而不是 12 月 1 日。我确认订阅已分配为按季度计划运行。有没有其他方法可以让报告自动运行;是服务器错误吗?还是人类运行的?
  • 是的,你说它在 8 月 1 日运行,但你也说它计划在 12 月 1 日运行。您说服务帐户运行了该作业,因此可能有恶意的其他作业执行了该作业。或者有人玩过系统时钟。我不相信这是一个错误,我认为你有一个对手。

标签: sql-server reporting-services


【解决方案1】:

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

  • 在 ReportServer 数据库的 Catalog 表中找到您的报告的 ItemID(使用 PathName识别您的报告)。
  • 在 ReportServer 数据库的 Subscriptions 表中找到您的订阅的 SubscriptionID,使用 ItemIDReport_OID 列/em> 报告。

然后,在 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>%'

(将&lt;SubscriptionID&gt; 替换为您订阅的SubscriptionID)。

我猜你会找到(至少)2 个使用这个查询的作业,一个是你的季度计划,一个是计划在 8 月 1 日运行的,两者都使用在 ReportServer 数据库中执行的类似 EXEC dbo.AddEvent @EventType='TimedSubscription', @EventData='&lt;SubscriptionID&gt;' 的 jobstep 命令(与您的&lt;SubscriptionID&gt;)。做任何适合第二份工作的事情。

【讨论】:

  • 我尝试了第二个查询,但给定的 SubscriptionID 得到了零个结果。我试着看了一下数据,但 Ops 支持技术人员没有太多时间给我,不幸的是我在生产中甚至没有基本的读取权限来确认。没有权限和支持时间,我被卡住了。我会将其标记为已回答,以感谢您的努力。谢谢。
  • @JWeezy 非常感谢你,希望特权用户能尽快抽出时间支持你,当他支持你时,请告诉我结果。
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多