SQL Server 2016でリンクされたサーバーを作成して、リモートのOracleデータベースと通信するのに苦労しています。
Oracle Database Client 12cをインストールしました。最初にInstantClientをインストールし、その後、ランタイムにインストールする機能がもっと必要だと気づきました。セットアップ中に、_C:\Oracle\product\12.1.0\client_1
_をOracleホームディレクトリとして受け入れました。 Oracleホームユーザーの場合、Windowsビルトインアカウント_NT AUTHORITY\LOCAL SERVICE
_を使用しました。
Oracle Net Configuration Assistantを使用して、エイリアスがMyAlias
、サービス名がMyServiceName
のtnsnames.oraファイルを作成しました。リモートデータベースの資格情報を提供した後、Net Configuration Assistantはデータベース接続を正常にテストできました。
Oracle Net Configuration Assistantによって作成されたtnsnames.oraファイルは、次のフォルダにあります:_C:\Oracle\product\12.1.0\client_1\network\admin
_
Powershellプロンプトから、_tnsping MyAlias
_を実行してOK (200 msec)
を取得しました。
私は(希望!)これは私がオラクル側を正解したことを意味すると思います.
Microsoft側では、.NET Framework 3.5をインストールしました。次に、Oracle Data Access Components(ODAC)を here からダウンロードしてインストールしました。具体的には、ODAC122010Xcopy_x64.Zipをダウンロードし、含まれているreadmeファイルの指示に従いました。インストール中に使用したコマンドラインオプションは次のとおりです。
_ .\install.bat all c:\Oracle odac true true
_
上記のコマンドのパラメータは次のとおりです。
all
(すべてのOracleプロバイダーをインストール)c:\Oracle
_(Oracleベースまたはサブフォルダーにする必要がありますか?)odac
(レジストリキーのパスを決定します)true
true
(このパラメーターは推測でした。このマシンのすべてのユーザーが機能するようにしたい)次に、環境変数PATHの先頭にC:\ OracleおよびC:\ Oracle\binを追加しました。 Powershellでは、これは:
_ [Environment]::SetEnvironmentVariable("Path","C:\Oracle;C:\Oracle\bin;" + $env:Path, [System.EnvironmentVariableTarget]::Machine)
_
SQL Server Management Studio内で、リンクサーバープロバイダーのリストにOraOLEDB.Oracleが表示されます。
リンクサーバーを作成しようとしています。これが私の設定です:
セキュリティのために、私は今、Oracle Net Configuration Assistantとの接続をテストするときに機能したのと同じ資格情報を使用して、固定セキュリティコンテキストで試行しています。
動作しません。一般的なエラーは次のとおりです。
リンクサーバーは作成されましたが、接続テストに失敗しました。リンクサーバーを保持しますか?
リンクサーバー "MYLINKEDSERVER"のOLE DBプロバイダー "OraOLEDB.Oracle"のデータソースオブジェクトを初期化できません。 OLEリンクサーバー "MYLINKEDSERVER"のDBプロバイダー "OraOLEDB.Oracle"がメッセージ "ORA-12154:TNS:指定された接続識別子を解決できませんでした"を返しました。 (Microsoft SQL Server、エラー:7303)
何が欠けていますか?どの診断テストが価値がありますか?