我有一份报告必须在当月的第二个工作日发出,所以如果1日有假期,那么它会在3日发出。
我正在考虑使用该月的第二个工作日填充表格并运行此表格中的报告。
如何让报告在下表中的日期值上运行,而不是每天创建一个订阅。
Run Date
_________
9/2/2015
10/2/2015
11/3/2015
12/2/2015
1/4/2016
答案 0 :(得分:1)
创建表格或视图以确定每个月的第二个工作日。
创建报告订阅以便每天运行。
接下来使用以下查询识别订阅。
查询来自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'
转到SQL Server代理作业并找到与JOB_NAME
同名的订阅
要查看订阅,请右键单击并选择属性。
点击步骤页面
点击Job-Step list
编辑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 :(得分:0)
根据您所描述的内容,Data Driven Subscriptions听起来就像是要走的路。这允许您控制何时发送报告,向谁报告以及通过填充数据库中的表来指定所需的任何参数值。但是,此Reporting Services功能仅适用于SQL Server企业版。
如果您没有Enterprise Edition,则可能需要考虑自定义应用程序或使用RS.exe实用程序执行一些VB脚本。