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 エントリ名を読み取る方法を見つけます (データベース名ではなく、全体に名前を付けるために選択したものは何でも)