2016-04-11 10 views
2

サブスクリプションを使用して、別のサブスクリプションを使用してレポートがネットワーク上に配置されたことをユーザーに警告することを考えていました。SSRSレポートはサブスクリプションに含まれていない場合レンダリングされます

レポートが含まれていない場合、電子メールサブスクリプションでレポートが実行されますか?レポートは大きく、実行に時間がかかります(したがって、電子メールではなくファイル共有)。

サーバーでクエリを再度実行せずに電子メールを送信するだけでいいと思っています。

enter image description here

+0

ExecutionLogを確認しましたか? – dotjoe

答えて

0

はい、レポートが実行されます。サブスクリプション全体のイベントは、レポートの実行を中心に展開されます。レポートが実行されない場合、サブスクリプションは実行されません。あなたの問題

ソリューションは、レポートを再実行せずに電子メールサブスクリプションを実行するための簡単な解決策は、スナップショットのオフレポートの実行を持つことです。 fileshareサブスクリプションの前にスナップショットを設定すると、レポートのスナップショットに基づいてファイル共有が行われ、同じスナップショットを使用してレポートを1回だけ実行すると、次の電子メール配信が行われます。

レポートマネージャのレポート処理セクションでレポートスナップショットを設定できます。

私の推奨される解決策

私はここでお勧めする程度だ私は私の組織でこれを行うにはアクセス権を持っていないので、私が試したかテストしていませんのでご注意下さい。しかし、私は過去にこのようなことをしてきました。ご不明な点がございましたら、コメントをお寄せください。私は明確にしようとします。

完成したファイル共有配信のサブスクリプションを検索するレポートを作成し、ファイル共有配信のサブスクリプションが成功すると、利用可能であることを示す電子メールを送信します。レポート内のパラメータを簡単に設定して、特定のレポートに関連する成功したサブスクリプションを探し、設定時にそのサブスクリプションを電子メールサブスクリプションに指定することができます。

以下は、サブスクリプションを持つサーバー上のレポートを分離するためのクエリです。特定のサブスクリプションタイプまたは結果を見つけるために、それを微調整することができます。

SELECT rs.ReportID 
    , cat.Name AS 'ReportName' 
    , rs.ScheduleID AS 'SQLJobID' 
    , cat.Path AS 'ReportPath' 
    , cat.Description 
    , sub.LastStatus 
FROM dbo.Catalog AS cat 
    INNER JOIN dbo.ReportSchedule AS rs ON cat.ItemID = rs.ReportID 
    INNER JOIN dbo.Schedule AS s ON rs.ScheduleID = s.ScheduleID 
    INNER JOIN dbo.Subscriptions AS sub ON sub.SubscriptionID = rs.SubscriptionID 
WHERE LEN(cat.Name) > 0 
    AND (s.EndDate IS NULL 
     OR s.EndDate > GETDATE()) 

これは、サーバー上のすべてのレポートを見つけるはずです。このクエリをデータセットとして使用して、新しいレポートを作成できます。新しいレポートでは、ファイル共有配信レポートのReportIDをパラメータとして使用して、レポートが正常に配信されたかどうかを確認します。次に、LastStatusを使用してレポートの本文を特定します(つまり、「レポートは準備完了です」または「レポートは準備ができていません」)。次に、この新しいレポートにサブスクリプションをセットアップして、必要に応じて実行して、ファイル共有が成功したことをユーザーに警告します。

こちらがお役に立てば幸いです。

関連する問題