代码之家  ›  专栏  ›  技术社区  ›  J Weezy

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

  •  0
  • J Weezy  · 技术社区  · 6 年前

    SQL Server 2014版

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

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

    更新(屏幕截图):

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   Wolfgang Kais    6 年前

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

    • 找到 项目ID 你的报告 目录 报表服务器数据库的表(使用 路径 姓名 确认你的报告)。
    • 找到 订阅ID 您在 订阅 报表服务器数据库的表,筛选 报告ID 使用 项目ID 报告的内容。

    然后,找到这个 <SubscriptionID> 在SQL Server代理作业的步骤中,在 材料安全数据表 数据库:

    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>%'
    

    (替换 <订阅ID> 订阅ID 你的订阅)。

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