簡體   English   中英

動態調度數據驅動的訂閱

[英]Dynamic scheduling of data driven subscription

我有一個數據驅動的訂閱,可以在特定時間將報告發送到電子郵件別名。 在訂閱查詢中:

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

因此,通過查詢,我得到了所有必填字段,電子郵件發送至,時間,報告參數。

我想使用時間參數來安排報告。 例如,如果時間是9:30,則報告應在9:30 AM寄出,以此類推。我想從SQL或數據庫方面而不是從C#中實現這一點。 如何實現呢?

結合上面建議的調度表,可以使用以下命令通過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分鍾+“報表運行需要多長時間”。

更進一步

  1. 您可以將報告發送放入Service Broker中,這樣可以確保將報告異步發送到計划檢查器作業。

要么

  1. 創建用於發送報告的排隊表,主作業將向其插入發送請求。 此外,您可以有5個作業讀取1-2個請求並將其發送,但是在這種情況下,您將延遲作工時間表。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM