【问题标题】:SSRS Subscription date from table表中的 SSRS 订阅日期
【发布时间】:2015-12-14 21:02:34
【问题描述】:

我有一份报告必须在每个月的第二个工作日发出,所以如果 1 号有假期,那么它会在 3 号发出。

我正在考虑用每月的第二个工作日填充一个表,并从该表运行报告。

我将如何根据下表中的日期值运行报告,而不是每天创建一个订阅。

  Run Date
  _________
  9/2/2015
  10/2/2015
  11/3/2015
  12/2/2015
  1/4/2016

【问题讨论】:

    标签: tsql reporting-services ssrs-2008-r2 subscription


    【解决方案1】:
    1. 创建表或视图以确定每个月的第二个工作日。

    2. 为您的报告创建订阅以每天运行它。

    3. 接下来使用以下查询识别订阅。

    查询来自here

    SELECT cat.Name AS ReportName,
            rs.ScheduleID AS JOB_NAME,
            sub.[Description],
            sub.LastStatus,
            sub.LastRunTime
        FROM ReportServer.dbo.[Catalog] cat
            JOIN ReportServer.dbo.Subscriptions sub
                ON cat.ItemID = sub.Report_OID
            JOIN ReportServer.dbo.ReportSchedule rs
                ON cat.ItemID = rs.ReportID
                   AND rs.SubscriptionID = sub.SubscriptionID
     WHERE cat.name = 'YourReportName'
    
    1. 进入SQL server agent Jobs,找到与JOB_NAME同名的订阅

    2. 要查看订阅,请右键单击并选择属性。

    3. 点击步骤页面

    4. 点击Job-Step列表的编辑按钮

    5. 编辑 exec 命令并添加 if exists 条件以仅在当月的第一个工作日运行。


     IF EXISTS ( SELECT *
                     FROM dbo.SecondBusDayTbl
                     WHERE BusDay = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) )
     BEGIN
         EXEC ReportServer.dbo.AddEvent @EventType = 'TimedSubscription'....
     END
    
    1. (可选)您可以做的另一件事是不要每天跑步。通过在订阅 sql 代理作业的计划步骤中创建 5 或 7 个不同的计划,编辑计划并仅在每月的前 5 或 7 天运行。

    【讨论】:

      【解决方案2】:

      根据您的描述,听起来Data Driven Subscriptions 将是可行的方法。这使您可以控制何时发送报告、发送给谁以及指定填充数据库中的表所需的任何参数值。但是,此 Reporting Services 功能仅适用于 SQL Server 企业版。

      如果您没有企业版,您可能需要考虑使用自定义应用程序或使用 RS.exe 实用程序编写一些 VB 脚本。

      【讨论】:

      • 这是我尝试的第一件事,但没有像我想要的那样创建自定义订阅的选项。谢谢。
      • 在发布问题时列出您已经尝试过的事情是个好主意,为大家节省时间:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      相关资源
      最近更新 更多