2016-06-29 9 views
0

現在、データ駆動型サブスクリプションで多数のSSRSレポート(2014バージョンを使用)を実装しています。SSRSデータ駆動型サブスクリプション - 監査/ロギングの実装方法

ジョブが実行されるたびにレポートが送信される電子メールアドレスと、使用されるパラメータの情報を格納する必要があります。

私はいくつかの有用な情報を得ることができますが、 ReportServer.dbo.ExecutionLog2ビューから実行開始時刻と終了時刻、パラメータなどを取得すると、電子メールアドレスのメタデータを格納するDBのどこにも見つかりません。

私はこの情報を入手して要件を満たす方法を考えることができますか?

ありがとうございます。

答えて

0

ReportServerデータベースのSubscriptionsテーブルのExtensionSettingsフィールドには、検索する情報があります。唯一の欠点は、XMLですべてです。しかし、あなたは電子メールアドレス、それからサブスクリプションについての他のすべてを引き出すことができます。以下は、サブスクリプションの検索やトラブルシューティングの際に頻繁に使用するクエリの例です。

SELECT A.SubscriptionID, A.Report_OID, B.Name, [Path], 
A.LastRunTime, A.Description, C.UserName AS Owner, A.LastStatus, A.ExtensionSettings 
FROM Subscriptions A INNER JOIN Catalog B 
ON A.Report_OID = B.ItemID 
INNER JOIN Users C 
ON A.OwnerID = C.UserID 
WHERE A.ExtensionSettings LIKE '%[email protected]%' 
ORDER BY A.LastRunTime DESC 

警告が、これは通常のサブスクリプションのために素晴らしい作品...データドリブンサブスクリプションは、この分野でいくつかのデータを持っていますが、あまり、人とDDSのどのようなので、実行するための実行から異なる場合があります。

データ駆動型サブスクリプションの提案は、サブスクリプションのデータを駆動するために使用するクエリに監査コードを追加することです。クエリがまだ格納されていない場合は、ストアドプロシージャにして、何が起きようとしているのかをキャプチャするためにいくつかのログを追加します。サブスクリプション配信が成功したと仮定します。

これらのうちいくつかを実行している場合は、言及したように、情報を渡してロギングを行うためのロギング/監査ストアドプロシージャを作成することがあります。これらのためにさまざまなマシンにデータソースがある場合は、1つのサーバーにログを集中させ、リンクサーバーを使用してプロシージャを呼び出すことができます。一部のDBAはそれを嫌うかもしれませんが、うまくいくでしょう。

+0

お返事ありがとうございます。私はあなたと同じ考えを持っていましたが、残念ながら、アラートがどこにどこで(どの電子メールアドレス)送られたかを監査する必要があります。これも可能ですか?またはSSRSの制限? – iKnowNothing

+0

SSRSとレポートサブスクリプションでこれを行う方法がわかりません。おそらく、電子メールサーバーでそれを監査する方法がありますか?もう1つの可能性として、レポート結果をファイルシステムに書き込み、SQLエージェントジョブを使用してそれらを添付ファイルとして電子メールで送信することもできます。ジョブの送信を監査します。きれいではない、保守の可能性がある悪夢ですが、それは要件を満たすでしょう。 –

+0

私はこれが非常に古いことを知っています。私もこれに対する答えを探しています。 私が今行ったことは、サブスクリプションを供給しているprocによって生成された行を保存する独自のログテーブルを更新することです。メールが送信されたと実際にはわからないのですが、少なくとも実行時に設定されたメールアドレスはわかっています。さて、より多くの検索に。 – John

関連する問題