2

私はMSSQLとSSRSについてかなり新しいです。データ駆動型サブスクリプションSSRSスタンダード版2008

私は、次のことを行うMSSQL 2008 Standard SSRSでデータ駆動型サブスクリプションを作成しようとしています。

レポート内の電子メールアドレスにレポートの結果を電子メールで送信します。 ラン例えば毎日

Select full_name, email_address from users where (full_name = 'Mark Price') 

これは、電子メールで送信するために誰を把握するEMAIL_ADDRESS列を使用することになり、これはまた、複数のメールアドレスの持つ複数の結果のために働く必要があります。

これを行う方法は、クエリを実行するサブスクリプションを作成することです。結果が見つからない場合は何も起こりません。 結果が見つかると、レポートは購読表の行を変更して、結果に見つかった正しい電子メール情報を使用して次の分にレポートを再度実行します。 これはばかげた考えですか?

これは主張しているブログ記事がいくつか見つかりましたが、コードの内容を理解するだけではわかりません。

だから、これについてどうやったらいいのか、インターネット上で簡単に説明することができますか?

+0

いいえ、馬鹿げた考えではなく、彼はMSの部分的な答えは、SSRSエンタープライズに移動してすぐにデータ駆動型のサブスクリプションを取得することになります。 –

+0

誰かが興味があれば私はあきらめてPHPでそれをやった:-) –

答えて

1

これは、SQL Server 2005 Enterprise開発ボックスでデータ駆動型サブスクリプションを使用して問題の解決策を書いた私の古い仕事に戻ってきました。

私はこの時点でthis postをブックマークしていましたが、それは非常に有望でしたが、実装する機会が来る前に仕事を移しました。

もちろん、それは2005年を対象にしていますが、コメントの1つは2008年も同様です。

0

サブスクリプションテーブルを変更するサブスクリプションを作成する代わりに、SQLエージェントなどの別の場所に配置します。しかし、その考え方は同じです。定期的に実行されているSQLは、サブスクリプション・テーブルの行を追加または変更できます。

「SSRSサブスクリプションテーブル」のGoogleは、いくつかの有用な結果が返されました:Here's an articleは、2005年に基づいていますが、原則は2008年の同じでなければなりません:This articleは2008年で、あなたにも記述されているものには本当に近いです。

私はサブスクリプションテーブルでフィールドを1つずつ見て、それぞれに必要なものを決定します。手動で行を作成してみてください(マニュアル挿入ステートメント)、自分自身にサブスクリプションを送信してください。

0

は駆動レポートをSSRSデータをサポートし、市場にいくつかのツール、があります。

これらはデスクトップツールですが、SSRSを置き換えるだけではなく、拡張することを検討していると思います。 SQLServer Standardエディションで使用できます。

0

サードパーティのソリューションであるSQL-RDを使用して、SQLエンタープライズにアップグレードせずにデータ駆動型スケジュールを作成および実行できます。また、イベントベースのスケジューリング(データベースの変更、ファイルの変更、受信した電子メールなどのイベントに関するレポートのトリガー)も付属しています。

1

エンタープライズの支払いを避けるために、SQL Server Standardにこのような機能を実装しました。最初に、私は「DDRをスケジュールする」(データ駆動型レポート)というレポートを作成しました。このレポートには、次のパラメータがあります。

レポートに含める:データテストが満たされた場合にトリガーするSSRSレポートの名前(フォルダを含む)。例えば。 "/ Accounting/Report1"。

パラメータセット:レポートで使用するパラメータをルックアップするために使用される文字列。例えば。 "ABC"

レポートを実行する必要があるかどうかを確認するクエリー:1つの値(ゼロまたは非ゼロ)を返すSQLクエリ。 0は「このレポートを実行しない」と解釈されます。

電子メール受信者:実行された場合、レポートを受信するセミコロン区切りの電子メール受信者のリスト。

「DDRをスケジュールする」レポートは実際にここで実行されているレポートであり、出力は私に送信されます。何が実行されるのですか別のレポート - この場合は "/ Accounting/Report1"であり、これらの電子メールアドレスが必要なレポートです。だから、 "スケジュールするDDR"は本当にレポートではありませんが、それはスケジュールされていて、同じように動作します。レポートを作成して実行するガジェットです。この場合には、「ABC」 - - テーブル内のレコードのセットを持って

CREATE TABLE [dbo].[ParameterSet](
      [ID] [varchar](50) NULL, 
      [ParameterName] [varchar](50) NULL, 
      [Value] [varchar](2000) NULL 
) ON [PRIMARY] 

各パラメータセットを次のように

は、私はまた、定義されたSQLのテーブルを持っています。この場合、レコードはABC/placecode/AAとABC/year/2013となります。これは、ABCに2つのパラメータがあることを意味します:placecodeとyear、値は "AA"と "2013"です。

SSRSレポートに "DDRのスケジュール設定" のためのデータセットはDDR3

DDR.dbo.DDR3 @reportName, @parameterSet, @nonZeroQuery, @toEmail; 

でストアドプロシージャです:

CREATE PROCEDURE [dbo].[DDR3] 
    @reportName   nvarchar(200), 
    @parameterSet nvarchar(200), 
    @nonZeroQuery nvarchar(2000), 
    @toEmail  nvarchar(2000) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    select ddr.dbo.RunADDR(@reportName,@parameterSet,@nonZeroQuery,@toEmail) as DDRresult; 

    END 

RunADDRはCLRです。どのように動作するかの概要を以下に示します。誰かがそれを望むなら私はいくつかのコードを投稿することができます。

  • 設定した資格情報
  • がparameterSetフィールドは、これらのパラメータの各々についてのスケジュールA DDRレポート
  • から渡されたパラメータセット名と一致するParameterSetテーブル内のすべてのパラメータを選択し
    • 取得された行で定義されたパラメータを保持するようにparameters配列を設定します。 (これはテーブルを使用してパラメータを動的に入力する方法です。)
  • エンド
  • のスケジュールA DDRから
    • を渡された「nonZeroQuery」値がある場合、あなたが戻ってゼロ行を得た場合次にnonZeroQueryし、終了を実行します。 (これは、いくつかの条件が満たされていない場合は、クエリの実行を防ぐ方法です。他の何かにゼロを返す任意のクエリは、レポートを実行できるようになります)
  • エンド
  • が今使用して、レポートを実行するためにSSRSを頼めばパラメータは、私たちはテーブルから抽出し、レポート名は、出力を取得し、ローカルファイルへ
  • メールスケジュールA DDR
  • から渡されたものは何でも電子メールアドレスにファイルを、それを書く
  • スケジュールA DDRから渡されました
関連する問題