none
XMLAを用いたDMXクエリでのアクセス権限問題 RRS feed

  • 質問

  • いつもお世話になります。

    現在、XMLAを用いたDMXクエリを発行するテストを行っています。
    DMXクエリ単体では正常にデータが取得されるのですが、XMLAから
    DMXクエリを発行するとアクセス権限エラーが返ってきます。

    --- 環境 ---
    OS: Windows XP Professional SP2 (+ Windows Update)
    DB: SQL Server 2005 Developer Edition (SP2)

    正常に結果が返ってきたDMXクエリは以下のとおりです。



    SELECT FLATTENED TOP 10 FROM Association.CONTENT

     

     

    また、アクセス権限違反が起きたXMLAクエリとエラーは以下のとおりです。



    <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
      <Body>
        <Execute xmlns="urn:schemas-microsoft-com:xml-analysis">
          <Command>
            <Statement>
              SELECT FLATTENED TOP 10  FROM Association.CONTENT
            </Statement>
          </Command>
          <Properties Catalog="Assoc_Test" Dialect="MDGUID_DM"/>
        </Execute>
      </Body>
    </Envelope>

     



     <Error ErrorCode="3239444525" Description="エラー (データ マイニング): ユーザー PCNAME\USERNAME には参照されるマイニング モデル Association へのアクセス権限がないか、該当するオブジェクトが存在しません。" Source="Microsoft SQL Server 2005 Analysis Services" HelpFile="" />

     

    同じSSMS上から同じサーバーに対して発行しているので、何故このようなエラー
    が返ってくるのか分かりません。また、DMXクエリで結果が返ってくる以上は、
    Associationマイニングモデルが見つからない、または未処理、ということは考えにくい
    と思っています。

    何かアドバイスがありましたらご教授よろしくお願いします。

    # もっと簡単にVC上からDMXクエリを発行する手があればいいのですが・・・。
    # C#なら直にDMXクエリが叩けるのに、と思うところです。

     

    2007年3月2日 2:29

すべての返信

  • すみません、XMLAのヘルプを読み間違えていました。

    XMLAの不適切な構文によりCatalogが未指定?状態になっていたようで、
    正しく修正することでDMXクエリをXMLAを通して発行することができました。



    <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/
    ">
      <Body>
        <Execute xmlns="urn:schemas-microsoft-com:xml-analysis">
          <Command>
            <Statement>
              SELECT FLATTENED TOP 10  FROM Association.CONTENT
            </Statement>
          </Command>
          <Properties>
            <PropertyList>
              <Catalog>Assoc_Test</Catalog>
              <!-- Dialectの指定方法が不明 
               
    <Dialect>{62C58FED-CCA5-44F1-83B6-7B45682B3904}</Dialect>
              -->
            </PropertyList>
          </Properties>
        </Execute>
      </Body>
    </Envelope>
     

     

    SQL Server Books onlineからの引用です。


    ここに示されているプロパティは、Discover および Execute メソッドの Properties 要素で使用します。

    XMLAを通してDMXクエリを発行する前にMDXクエリも試していたのですが、この時点で誤った
    構文が通っていたようです。MDXクエリの場合は、Catalogを指定しなくても、全SSASデータベース内の
    で合致したキューブを参照するようです。
    (但し、同名のキューブが複数ある場合は検証していません)

    また、MDXクエリでもCatalogプロパティを明示的に指定した場合は、Cubeが存在しない場合は
    エラーになるようです。

    上記CODE中にも書きましたが、依然不明なことはDialectによる優先言語指定方法がわかりません。
    "MDGUID_MD"やらGUIDやら並べてみたのですが、全てエラーとされました。

    この点についても調べたいとは思いますが、お分かりの方がいましたらご教授お願いします。

     

    2007年3月2日 4:15
  • いつもお世話になります。

    ちょっと本題とはずれていますが、VC上から直にDMXクエリを飛ばせるっぽいので
    載せておきます。(VC++掲示板に近い内容ですが、スレッドの流れからこちらに記載します)


    # もっと簡単にVC上からDMXクエリを発行する手があればいいのですが・・・。
    # C#なら直にDMXクエリが叩けるのに、と思うところです。
     

     

    以下、stdafx.hに記載



    #include <comdef.h>
    #include <atldbcli.h>
    #include <atldbsch.h>

    #define DBINITCONSTANTS
    #include "C:\Program Files\Microsoft SQL Server\90\SDK\Include\oledbdm.h"

     

    以下、処理部に記載



    CDataSource  ds;
    CSession  session;
    ds.OpenFromInitializationString(L"Provider=MSOLAP;Data Source=localhost;Prompt=1");
    session.Open(ds);

    CStringW wcsDMX;
    CCommand<CDynamicAccessor> cmdDMX;
    wcsDMX = L"SELECT TOP 10 NODE_CAPTION FROM Association.CONTENT ";
    cmdDMX.SetBlobHandling(DBBLOBHANDLING_NOSTREAMS);
    cmdDMX.Open(session, wcsDMX);
    for (HRESULT hr = cmdDMX.MoveFirst() ; S_OK == hr ; )
    {
      LPWSTR  wszNodeCaption = NULL;
      if ( cmdDMX.GetValue((DBORDINAL)1, &wszNodeCaption) )
      {
       TRACE(_T("%s\n"), CW2CT(wszNodeCaption));
      }
      hr = cmdDMX.MoveNext();
    }

    // DBクローズ処理
    cmdDMX.Close();
    ...

     

    [訂正]

    # MSDNなりBOLなりにサンプルがあったのですが、ググっても出てこなくなっちゃった・・・
    # 根気よく調べれば多分、出てくると思います。

    以下のURLにありましたので、訂正致します。(Appendix.1以下が該当部分です)
    http://msdn2.microsoft.com/en-us/library/ms345148.aspx

    結局、XMLAを用いることなくVC上からも直にDMXクエリの発行と結果取得を行えることになりました。
    ただ、相変わらずXMLAのDialectプロパティ指定の方法が不明なため、未解決のままにしておきます。

    何かお気づきの点がありましたら、ご指摘・ご教授よろしくお願いします。

     

    2007年3月5日 2:41