none
分散クエリ(Oracleへのリンクサーバ)について RRS feed

  • 質問

  • SQLServer初心者です。

    Oracleへのリンクサーバで質問があります。

    以下開発環境にて発生した事象+基本的なことについて
    アドバイス頂きたいとおもいます。

    OS           :WindowsXP SP2
    SQLServer    :SQLServer 2005 Developer Edition SP2
    Oralce       :Oralce 8i 8.1.7.3(別マシン)
    OracleClient :9.2


    (1)Oracleへのリンクサーバを作成しましたが、
       Microsoft製プロバイダ MSDAORAは問題なく接続できましたが
       Oracle製プロバイダ OraOLEDB.oracleで接続した場合
       リンクサーバの作成、リンクサーバへのログインマッピングは
       正常に実行できましたが、
       いざリンクテーブルへのクエリを実行すると
       エラーが発生してしまいます。
       (エラー番号は忘れてしまいましたが
       DBTYPEがどうやら一貫性がどうやら・・といったメッセージが返されます)

       ちなみにVBScriptなどで(同環境で)レガシーADOをつかって
       OraOLEDB.oracleプロバイダを使用してOracleに接続してみた場合は
       問題なく接続できました。


    (2)OPENROWSETなどでアドホックなクエリを実行するには
       sysAdmin権限がないとだめなのでしょうか?


    (3)リンクサーバ(Oracle)へのログインマッピングは
       ユーザ単位でしかマッピングできないのでしょうか?
       たとえば、ActiveDirectoryのセキュリティグループと
       1つのOracleスキーマへのログインへのマッピングは無理でしょうか?
      

    2007年3月11日 14:07

すべての返信

  • (1)の件ですが、

    メッセージ 7356、レベル 16、状態 1、行1

    リンクサーバ"リンクサーバ名"のOLE DB プロバイダ  "OraOLEDB.Oracle"により、一貫性のない
    メタデータが列に指定されました。オブジェクト""スキーマ名"."テーブル名""に列 "フィールド名"
    (コンパイル時の序数 3)に、コンパイル時には 129 の"DBTYPE" が含まれ、
    実行時には 130 が含まれていることがレポートされました。

    というエラーが発生します。

    しかし、OPENQUERYを使用すると問題なくビューを実行できました。

    (A)
    SELECT * FROM リンクサーバ名..スキーマ名.テーブル名
    →MSDAORA ○
    →OraOLEDB×

    (B)
    SELECT * FROM OPENQUERY(リンクサーバ名,'SELECT * FROM スキーマ名.テーブル名')
    →OraOLEDB○

    通常、Oracle製プロバイダの場合は(B)の書き方をするのが常識なのでしょうか?
    また、Oracleへ接続する場合、Microsoft製、Oracle製でパフォーマンスの違い
    などはあるのでしょうか?

    お手数ですがアドバイスを頂けると助かります。

    (2)の件は、
    セキュリティ上、やはり強い権限がないと実行できないのでしょうか?

    (3)の件は、
    リンクサーバをシステム利用者が使用する場合は、Windows認証だと
    たくさんマッピングしないといけないのですが、そもそも
    そういった使い方はしないものなのでしょうか?




    2007年3月14日 2:31