none
ReportingServices(SSRS)と一時表を使うストアドプロシージャの利用について RRS feed

  • 質問

  • お世話になっております。

    SQLServer2008 Reporting Service で レポートを作成しようとしています。
    一時表を使った次のようなストアドプロシージャからのレコードセットをもとに作成しようと思い
    CREATE PROCEDURE PRC_TEST
    AS
    BEGIN
    CREATE TABLE #TMP (
    	V1 INT,
    	V2 INT
    )
    
    SELECT V1,V2 FROM #TMP
    END
    

    データソース構成ウィザードで「データセット内に指定するデータベースオブジェクト」で
    このストアドプロシージャを指定するのですが、
    結果セットの列を1つも認識してくれず、使用できません。
    (データソース構成ウィザードで完了しても、そのあとのレポートウィザードのデータソースの選択にこのストアドがでてきません)

    一時表を使ったストアドプロシージャは、ReportingServiceのソースに利用できないのでしょうか?

    情報をご存知の方、
    ご教示のほど宜しくお願い致します。
    2009年6月30日 12:33

回答

  • SQL Server 2008 Report Builder 2.0 の、
    "データを追加するにはここをクリックしてください"から起動できるウィザードの話ですね。


    ウィザード起動の前に左側の"レポート データ"ペインにて 新規 > データセット から
    ストアドプロシージャ「PRC_TEST」のデータセットを作成しておけば、
    ウィザードで(フィールドを認識済みの)既存のデータセットとして選択できます。


    ちなみに
    ウィザード中で新規データセットを作成する場合でも、
    「クエリのデザイン」ページで「テキストとして編集」でストアドプロシージャを指定するとフィールドを認識する*場合がある*ようです。
    試した限りでは、目的のストアドプロシージャAと同一のデータセットを返す別のストアドプロシージャBを用意して、
    初回にBを指定してクエリを実行し(この段階ではフィールドを認識していない)、その後Aを指定することで(クエリの実行は必要ない)
    フィールドを認識した状態で「フィールドの配置」ページに移動できました。
    きっと「フィールドの配置」ページへの移動ではフィールドの存在確認方法が異なるのでしょう。


    ※SSRS の話題ですので、"SQL Server Business Intelligence"のフォーラムの方がよろしいかと思います。

    • 回答としてマーク DEKOCHAN 2009年7月1日 7:49
    2009年6月30日 20:29

すべての返信

  • SQL Server 2008 Report Builder 2.0 の、
    "データを追加するにはここをクリックしてください"から起動できるウィザードの話ですね。


    ウィザード起動の前に左側の"レポート データ"ペインにて 新規 > データセット から
    ストアドプロシージャ「PRC_TEST」のデータセットを作成しておけば、
    ウィザードで(フィールドを認識済みの)既存のデータセットとして選択できます。


    ちなみに
    ウィザード中で新規データセットを作成する場合でも、
    「クエリのデザイン」ページで「テキストとして編集」でストアドプロシージャを指定するとフィールドを認識する*場合がある*ようです。
    試した限りでは、目的のストアドプロシージャAと同一のデータセットを返す別のストアドプロシージャBを用意して、
    初回にBを指定してクエリを実行し(この段階ではフィールドを認識していない)、その後Aを指定することで(クエリの実行は必要ない)
    フィールドを認識した状態で「フィールドの配置」ページに移動できました。
    きっと「フィールドの配置」ページへの移動ではフィールドの存在確認方法が異なるのでしょう。


    ※SSRS の話題ですので、"SQL Server Business Intelligence"のフォーラムの方がよろしいかと思います。

    • 回答としてマーク DEKOCHAN 2009年7月1日 7:49
    2009年6月30日 20:29
  • nagasakit様

    どうも有り難う御座います。

    申し訳御座いません、実は私が勘違いをしてしまっていて
    VisualBASIC2008 で、WebフォームにMicrosoft Report Viewer というパーツを埋め込んで
    そこから「新しいレポートをデザイン」しておりました。
    どうもこれは、SQLServerReportingServicesの機能ではなくて
    Microsoft Reportingテクノロジと呼ばれる機能でした。
    (SQLServer 同梱でもなく、クリスタルレポートでも、VB6のChart ControlでもないレポーティングツールをMicrosoftさんから提供されていることを知りませんでした。)

    SSRSで同じストアドを組み込んでみたところ
    (クエリービルダでストアドを指定、パラメータに@<ParamName>をおのおの指定)
    うまく出来ました。

    お騒がせ致しました。
    2009年7月1日 7:48
  • 書き忘れてしまいました。
    投稿先に気をつけます。
    2009年7月1日 7:49