sql >> データベース >  >> RDS >> Oracle

SQL 2000/2005でOracleデータベースにリンクされたサーバーをどのようにセットアップしますか?

    リンクされたサーバーをリモートのOracleデータベースにセットアップすることができました。これは、最終的には複数のステップからなるプロセスになりました。

    1. SQLServerにOracleODBCドライバーをインストールします。
    2. SQLServer上のOracleデータベースへのシステムDSNを作成します。
    3. システムDSNを使用してSQLサーバー上にリンクサーバーを作成します。

    ステップ1:サーバーにOracleODBCドライバーをインストールする

    a。必要なOracleInstantClientパッケージをダウンロードします:Basic、ODBC、およびSQL * Plus(オプション)

    b。パッケージをSQLサーバーのローカルディレクトリ(通常はC:\Oracle)に解凍します。 。これにより、C:\Oracle\instantclient_10_2のような[ディレクトリ]が作成されます。 、これは、この回答の残りの部分で参照される[ディレクトリ]の値になります。

    c。 tnsnames.oraという名前のテキストファイルを作成します 以下を含むインスタントクライアント[ディレクトリ]内:

    OracleTnsName = 
    (
      DESCRIPTION=
      (
        ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521)
      )
      (
        CONNECT_DATA = (SERVICE_NAME=acc)
      )
    )
    

    注:実際のHOSTPORT 、およびSERVICE_NAME 接続を確立するOracleサーバーによって異なります。この情報は、多くの場合、リスナーの下にあるOracleネットワーククライアントツールを使用して見つけることができます。 。

    OracleTnsName Oracleデータソースに割り当てる任意の名前を指定でき、システムDSNを設定するときに使用されます。必要に応じて、上記の構文を使用して、同じtnsnames.oraファイルに複数のTNS名を定義することもできます。

    d。 [ディレクトリ]をシステムに追加しますPATH 環境変数。

    e。 TNS_Adminという名前の新しいシステム環境変数を作成します [ディレクトリ]

    の値を持つ

    f。 [directory]\odbc_install.exeを実行します OracleODBCドライバをインストールするためのユーティリティ。

    g。 SQLサーバーを再起動することをお勧めしますが、必須ではない場合があります。また、SQLサーバーとSQLエージェントのユーザーIDについて、このディレクトリにセキュリティ権限を付与することもできます。

    ステップ2:OracleODBCドライバーを使用するシステムDNSを作成する

    a。 ODBCデータソースアドミニストレータを開きます 道具。 [管理ツール->データソース(ODBC)]

    b。 [システムDSN]タブを選択してから、[追加]ボタンを選択します。

    c。ドライバリストで、Instantclient{バージョン}のOracleを選択します。 。 (例:「インスタントクライアント10_2のOracle」)次に、「完了」ボタンを選択します。

    d。次のように指定します:

    • Data Source Name :{システムDSN名}
    • Description :{空白/空のまま}
    • TNS Service NameOracleTnsNameが必要です tnsnames.oraで定義しました リストされているファイルを値として選択します。
    • ユーザーID :{Oracleユーザー名}

    e。 [接続のテスト]ボタンを選択します。 {Oracleユーザーパスワード}を入力するように求められます。すべてがうまくいけば、テストは成功します。

    ステップ3:SQLでOracleデータベースにリンクされたサーバーを作成する

    SQL Serverでクエリウィンドウを開き、次を実行します。

    EXEC sp_addlinkedserver 
         @server        = '{Linked Server Name}'
        ,@srvproduct    = '{System DSN Name}'
        ,@provider      = 'MSDASQL'
        ,@datasrc       = '{System DSN Name}'
    
    EXEC sp_addlinkedsrvlogin 
         @rmtsrvname    = '{Linked Server Name}'
        ,@useself       = 'False'
        ,@locallogin    = NULL
        ,@rmtuser       = '{Oracle User Name}'
        ,@rmtpassword   = '{Oracle User Password}'
    

    注:{Linked Server Name} Oracleサーバーを参照するときに使用したいものなら何でもかまいませんが、{System DNS Name} 必須 以前に作成したシステムDSNの名前と一致します。

    {Oracle User Name} システムDSNで使用されるユーザーID、および{Oracle User Password}と同じである必要があります。 ODBC接続を正常にテストするために使用したものと同じである必要があります。 Oracleリンクサーバーの問題のトラブルシューティングについては、KB280106を参照してください。

    Oracleリンクサーバーへのクエリ

    OPENQUERYを使用してOracleリンクサーバーでパススルークエリを実行できますが、非常に大きなレコードセットの場合、ORA-01652を受け取る可能性があることに注意してください。 ORDER BYを指定した場合のエラーメッセージ パススルークエリの句。 ORDER BYの移動 パススルークエリから外部のselectステートメントへの句は、この問題を解決しました。




    1. Oracleの最後の行をテーブルに取得する方法

    2. Java/jspでMSSQLServerストアドプロシージャを実行して、テーブルデータを返すにはどうすればよいですか?

    3. MySQLでシーケンスを作成する方法

    4. IN句のパラメータを使用したOracleストアドプロシージャ