Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 表中的SSRS订阅日期_Tsql_Reporting Services_Ssrs 2008 R2_Subscription - Fatal编程技术网

Tsql 表中的SSRS订阅日期

Tsql 表中的SSRS订阅日期,tsql,reporting-services,ssrs-2008-r2,subscription,Tsql,Reporting Services,Ssrs 2008 R2,Subscription,我有一份报告,必须在每月的第2个工作日发送,因此如果1号有假期,则在3号发送 我正在考虑用每月的第二个工作日填充一个表,并从该表运行报告 如何让报表在下表中的日期值上运行,而不是每天创建一个订阅 Run Date _________ 9/2/2015 10/2/2015 11/3/2015 12/2/2015 1/4/2016 根据你所描述的,这听起来将是一个方向。这允许您控制何时向谁发送报告,以及通过在数据库中填充表来指定所需的任何参数值。但是,此Reportin

我有一份报告,必须在每月的第2个工作日发送,因此如果1号有假期,则在3号发送

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

如何让报表在下表中的日期值上运行,而不是每天创建一个订阅

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

根据你所描述的,这听起来将是一个方向。这允许您控制何时向谁发送报告,以及通过在数据库中填充表来指定所需的任何参数值。但是,此Reporting Services功能仅在SQL Server的企业版中可用

如果你没有企业版,你可能需要考虑一个定制的应用程序或者使用实用程序做一些VB脚本。

  • 创建表或视图以确定每个月的第二个工作日

  • 创建报表订阅以每天运行报表

  • 接下来,使用以下查询标识订阅

  • 查询来自

  • 转到SQL server代理作业并查找与
    作业\u名称相同的订阅

  • 要查看订阅,请右键单击并选择“属性”

  • 单击步骤页面

  • 单击作业步骤列表的编辑按钮

  • 编辑exec命令并添加
    如果存在
    条件,使其仅在当月第一个工作日运行


  • (可选)你可以做的另一件事是不要每天跑步。通过在订阅sql代理作业的计划步骤中创建5或7个不同的计划,编辑计划并仅在每月的前5或7天运行

  • 这是我尝试的第一件事,但是没有像我所希望的那样创建自定义订阅的选项。谢谢。在发布问题时,最好列出您已经尝试过的内容,这样可以为大家节省时间:)
    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'
    
     IF EXISTS ( SELECT *
                     FROM dbo.SecondBusDayTbl
                     WHERE BusDay = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) )
     BEGIN
         EXEC ReportServer.dbo.AddEvent @EventType = 'TimedSubscription'....
     END