none
最終処理日付を取得したい(SSAS2005+SSRS2005+XMLA) RRS feed

  • 質問

  • おがさわらです。
    はじめまして。
    SSRS2005から直接XMLAを指定してデータを取得したいのですが、やり方がわかりません。できないんでしょうか?

    目的は、
     SSRS側でキューブの最終処理(LAST_DATE_UPDATE)を表示させたい
    です。
    SSAS2005は、MOLAPでプロアクティブキャッシュ+追跡テーブルによる更新という状態で利用しています。
    直に更新されるはずですが、自身(SSIS)でコントロールしていないので、最終的な結果として、最終処理日付を
    利用したいのです。

    http://technet.microsoft.com/ja-jp/library/ms186653(SQL.90).aspx
    を参考にして、XMLAでキューブのプロパティ情報を取得する方法は分かったのですが、
    SSRSでは、DMX, MDX以外の記述を行うとエラーになってしまいます。
    以上。よろしくお願いします。
    2009年9月24日 10:22

回答

  • 面倒ですが一応以下の方法で可能です。

    ・SSRS(のMDXビルダ)でのクエリ記述の制限を回避するために、RDBからSSASのデータベースへリンクサーバを設定
    ・XMLAではなくMDXでクエリを記述するために、Analysis Services Stored Procedure Project(http://asstoredprocedures.codeplex.com/)の ASSP アセンブリを設定

    サンプルクエリ(※T-SQL クエリです)
    SELECT * FROM OPENQUERY(%SSASデータベースへのリンクサーバ名%, 'CALL ASSP.DMV("SELECT CUBE_NAME,LAST_DATA_UPDATE FROM $SYSTEM.MDSCHEMA_CUBES")')


    ※CALL ASSP.Discover などでも可能だと思います。
    ※SSAS2008 なら、ASSPアセンブリを使わずに 直接 スキーマ行セット(Shema Rowsets) を使用できます。

    2009年9月24日 18:08

すべての返信

  • 面倒ですが一応以下の方法で可能です。

    ・SSRS(のMDXビルダ)でのクエリ記述の制限を回避するために、RDBからSSASのデータベースへリンクサーバを設定
    ・XMLAではなくMDXでクエリを記述するために、Analysis Services Stored Procedure Project(http://asstoredprocedures.codeplex.com/)の ASSP アセンブリを設定

    サンプルクエリ(※T-SQL クエリです)
    SELECT * FROM OPENQUERY(%SSASデータベースへのリンクサーバ名%, 'CALL ASSP.DMV("SELECT CUBE_NAME,LAST_DATA_UPDATE FROM $SYSTEM.MDSCHEMA_CUBES")')


    ※CALL ASSP.Discover などでも可能だと思います。
    ※SSAS2008 なら、ASSPアセンブリを使わずに 直接 スキーマ行セット(Shema Rowsets) を使用できます。

    2009年9月24日 18:08
  • nagasakitさん 
    情報ありがとうございます。
    # 本当に面倒でした。

    頂いた情報で、うまく動作させることができました。
    ありがとうございました。

    参考までに・・・
    SSAS,RDBが同じサーバで動作しているためかADのダブルホップ問題に当ったのか良く分かりませんが、
    リンク サーバーで少しはまりました。クエリを実行すると「アクセスが拒否されました。」エラーが発生。
    以下で回避できました。
     [サーバーオブジェクト]-[リンク サーバー]-[プロバイダ]でMSOLAPを右クリック、プロパティで
     InProcess許可をcheckする
      (参考:http://support.microsoft.com/kb/218592/ja )



    2009年9月25日 3:08