1

特定の時間に電子メールエイリアスにレポートを配信するデータ駆動型サブスクリプションがあります。サブスクリプションクエリの場合:

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パラメーターを取得します。

時間パラメータを使用してレポートをスケジュールしたいと思います。たとえば、時刻が9:30の場合、レポートは午前9:30にメールで送信する必要があります。これは、C#からではなく、SQLまたはデータベースフロントから実行したいと思います。これを達成する方法は?

4

2 に答える 2

1

上記で提案したスケジューリングテーブルと組み合わせると、@ report_pathをパラメーターとして使用して、以下を使用してTSQL経由でレポートを送信できます。

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
于 2012-10-24T17:34:53.150 に答える
0

1分ごとに実行され、送信するレポートがあるかどうかを確認して送信するジョブを作成できます。ただし、最大1分+「レポートの実行にかかる時間」の遅延があることを意味します。

さらに

  1. レポート送信をサービスブローカーに入れると、レポートがスケジュールチェッカージョブに非同期で送信されるようになります。

また

  1. レポート送信用のキューイングテーブルを作成すると、メインジョブが送信リクエストを挿入します。さらに、1〜2個のリクエストを読み取って送信する5つのジョブを持つことができますが、この場合、ジョブスケジュールとして遅延します。

お役に立てれば。

于 2012-10-24T16:05:31.647 に答える