excel - ORA-12560 : TNS: protocol adapter error issue: Excel 64-bit/Windows 10 64-bit

标签 excel oracle

我正在运行一个以前通过 Excel 32 位连接到 Oracle 数据库时使用的 VBA 脚本,但现在我使用的是 64 位 Excel。
VBA代码:

Set cn1 = New ADODB.Connection
Set rs1 = New ADODB.Recordset
cn1.ConnectionString = "Driver={Microsoft ODBC for Oracle};Server=BR1P1;Uid=BR1USER;Pwd=myPass"
cn1.Open
rs1.Open Query, cn1
当我执行“cn1.open”我得到这个错误:"Run-time error'-214746... [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"然后我尝试解决添加新数据源的问题:
ODBC 数据源管理器(64 位)> 文件 DSN> 单击添加...> 从列表中选择:Oracle em OraClient11g_home1(“Oracle em”表示“Oracle for”,我的操作系统在葡萄牙语中)> 下一步> 浏览到文件:“C:\Windows\System32\odbcad32.exe”>“下一步”>“完成”
这样做系统会给我驱动程序名称:"Oracle em OracleClient11g_home1"之后它将提示输入服务名称、用户名和密码。我根据我的 TNSNAMES.ORA 通知服务器名称
回到 VBA 我根据驱动名称更改了代码:
cn1.ConnectionString = "Driver={Oracle em OracleClient11g_home1}"
现在,当在 VBA 中执行“cn1.Open”时,我收到了这个新的错误消息:
"Run-time error'-214746... [Oracle][ODBC]ORA-12560: TNS:protocol adapter error"
我的 TNSNAMES.ORA 文件是这样的:
BR1P1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = myhost.com)(PORT = 1575))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = BR1P1)))
好吧,我只是坚持这一点。请感谢任何帮助。
将我的 MS Office 更改为 64 位版本后,这很痛苦。

最佳答案

Microsoft ODBC for Oracle仅存在于 32 位,因此您不能将其用于 64 位 Excel。

如果您喜欢使用 Oracle 的 64 位 ODBC 驱动程序,那么您必须安装它。从 64-bit Oracle Data Access Components (ODAC) Downloads 下载驱动程序

Oracle ODBC 驱动程序的 ConnectionString 格式与 Microsoft ODBC 驱动程序的格式不同,请参阅

  • Microsoft ODBC Driver - 连接字符串格式和属性
  • Oracle ODBC Driver - 连接字符串的格式
  • https://www.connectionstrings.com/oracle/ -> ODBC 驱动程序

  • 所以,对于 Oracle 你的 ConnectionString
    Driver={Microsoft ODBC for Oracle};Server=BR1P1;Uid=BR1USER;Pwd=myPass
    

    将会
    Driver={Oracle em OracleClient11g_home1};DBQ=BR1P1;Uid=BR1USER;Pwd=myPass
    

    关于excel - ORA-12560 : TNS: protocol adapter error issue: Excel 64-bit/Windows 10 64-bit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53261612/

    相关文章:

    c# - 如何在 Excel 中移动 NamedRange - VSTO 而不是 VBA

    vba - Excel:将工作表导出为 CSV 文件的宏,无需离开当前的 Excel 工作表

    oracle - 未通过 SQLPlus 脚本的参数的默认值

    sql - GROUP BY 与 ORDER BY 组合

    Oracle 10 g - 无法释放表空间中的空间

    c# - 为什么我的 XLL 比我的 UDF 慢?

    php - Yii2:将 excel 列与主记录匹配

    vba - 搜索两个值并在循环中复制其间的所有内容

    Oracle SQL Developer 无法启动

    Oracle查询执行计划