我有一个数据驱动订阅,可以在特定时间向电子邮件别名发送报告。 在订阅查询中:
select WorkProjectionReportTime,WorkProjectionReportToMailAlias,
'Work Projection Report for the period ' + CONVERT(varchar(10),GETDATE()-31,101)+ ' to '+CONVERT(varchar(10),GETDATE()-1,101) as Subject,
CONVERT(varchar(10),GETDATE()-31,101) as FromDate,CONVERT(varchar(10),GETDATE()-1,101) as ToDate, 60 as WO,
'Please see the attachment for the details' as body
from tblConfig
Pivot ( MAX(cValue) for cKey in (WorkProjectionReportTime,WorkProjectionReportToMailAlias) ) as xyz
因此,通过查询,我获得了所有必填字段,Email To,Time,report parameters。
我想使用time参数来安排报告。 例如如果时间是9:30,报告应该在上午9:30等邮寄。 我想从SQL或数据库前端而不是从C#实现这一点。怎么做到这一点?
答案 0 :(得分:1)
结合上面建议的调度表,您可以使用以下命令通过TSQL发送报告,使用@report_path作为参数:
SELECT 'exec ReportServer.dbo.AddEvent @EventType=''TimedSubscription'',
@EventData=''' + CONVERT(VARCHAR(max), rs.SubscriptionID) + ''''
FROM ReportServer.dbo.Catalog c,
ReportServer.dbo.ReportSchedule rs,
ReportServer.dbo.Schedule s
WHERE rs.ReportID = c.ItemID
AND rs.ScheduleID = s.ScheduleID
AND c.path = @report_path
AND s.RecurrenceType = 1 -- only the ones with the regular scheduling disabled
答案 1 :(得分:0)
您可以创建每分钟运行的作业,并检查是否有要发送和发送的报告。但这意味着您将延迟最多1分钟+“报告运行所需的时间”。
更多
或
希望这会有所帮助。