0

VBA を使用して TNS ファイルから Service_Name を取得する方法はありますか? 誰でも自分の TNS エントリに好きな名前を付けることができるため、私のパススルー クエリは彼らのコンピュータでは機能しません。

SERVICE_NAME の代わりに TNS エントリ自体を使用してクエリをセットアップする方法があれば、それも機能します。データベースがコンピューター固有のものではないことを確認したいだけです。

たとえば、DSN を使用しない接続文字列は次のとおりです。

[ODBC] DRIVER={Oracle 内の Oracle1}
UID=ユーザー名
Pwd=パスワード DBQ=myTNSEntryName.ourcompany.com
Trusted_Connection=はい
server= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP)
(HOST=ourhost.ourcompany.com)) (PORT =9999) )
(CONNECT_DATA= (SERVICE_NAME=myTNSEntryName.ourcompany.com)
) )

これが私のTNSエントリです

myTNSEntryName.ourcompany.COM=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=ourhost.ourcompany.com)
(PORT=9999)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=ourdatabasename.ourcompany.com)
) )

TNS ファイルでは、SERVICE_NAME は ourdatabasename ですが、TNS エントリに myTNSEntryName という名前を付けたため、現在は SERVICE_NAME として report.ourcompany.com を使用しています。

ありがとうございました

編集:少し明確にするために、基本的に、MS AccessパススルークエリのPROPERTIESおよびDocmdのODBC CONNECT STR行で使用できるDSNなしの接続文字列を設定する方法を探しています.TransferDatabase.

または、ユーザーの TNS エントリ名を読み取る方法を見つけます (データベース名ではなく、全体に名前を付けるために選択したものは何でも)

4

1 に答える 1

0

パラメータは、使用DBQする TNS 名です。SERVEROracle ODBC ドライバーは、またはTRUSTED_CONNECTIONパラメーターを使用しません。Microsoft の ODBC Driver for Oracle は、SERVERパラメータを使用します。ドライバーがtrusted_connectionパラメーターを使用する可能性がある場合、またはそれが Oracle コンテキストで何を行う可能性があるかはわかりません。それらの両方を削除する必要があります。

もちろん、Oracle ODBC ドライバーの名前はマシンによって異なる場合があります。これは、Oracle ホームの名前が含まれており、ユーザーが Oracle クライアントをインストールするときに自由に設定できるためです。任意のマシンで動作させたい場合は、(SQLDrivers関数を使用して) ODBC ドライバー マネージャーに問い合わせるか、レジストリ キーを照会する必要があります。HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers

于 2013-02-28T19:26:59.857 に答える