0

有没有办法使用 VBA 从 TNS 文件中提取 Service_Name?因为任何人都可以为他们的 TNS 条目命名任何他们想要的名称——我的直通查询在他们的计算机上不起作用。

如果有办法通过使用 TNS 条目本身而不是 SERVICE_NAME 来设置查询 - 那也可以。我只是想确保我的数据库在任何方面都不是特定于计算机的。

例如,这是我的无 DSN 连接字符串

[ODBC] DRIVER={Oracle in Oracle1}
UID=username
Pwd=password DBQ=myTNSEntryName.ourcompany.com
Trusted_Connection=Yes
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 是我们的数据库名称,但由于我将 TNS 条目命名为 myTNSEntryName - 现在使用 report.ourcompany.com 作为 SERVICE_NAME 不起作用。

谢谢你

编辑:澄清一点,基本上我正在寻找一种方法来设置一个 DSN'less 连接字符串,然后我可以在 MS Access Pass-Through 查询的 PROPERTIES 和 Docmd 中的 ODBC CONNECT STR 行中使用它.Transfer数据库。

或者,找到一种方法来读取用户的 TNS 条目名称(不是数据库名称,而是他们选择的任何名称)

4

1 回答 1

0

DBQ参数是您要使用的 TNS 名称。Oracle ODBC 驱动程序不使用SERVERorTRUSTED_CONNECTION参数。Microsoft 的 ODBC Driver for Oracle 使用该SERVER参数。我不确定驱动程序可能会使用该trusted_connection参数或在 Oracle 上下文中可能会做什么(如果有的话)。这两个都应该被删除。

当然,Oracle ODBC 驱动程序的名称在不同机器上可能会有所不同,因为它包含 Oracle Home 的名称,用户可以在安装 Oracle 客户端时自由设置。如果您希望它在任意机器上工作,您需要询问 ODBC 驱动程序管理器(使用该SQLDrivers功能)或者您需要查询注册表项HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers

于 2013-02-28T19:26:59.857 回答