Windows环境下RStudio通过ODBC连接SAP Hana失败求助
RStudio连接SAP HANA数据库的ODBC报错排查
背景与前期准备
我最近在尝试用RStudio连接SAP HANA数据库,先后测试了RODBC、RJDBC等库,调研后确定odbc是RODBC的替代新版本,而且性能优于RJDBC。
我已经按照RStudio文档完成了Windows 64位SAP HANA Driver的安装,在RStudio里可以成功识别到HDBODBC驱动,执行以下代码验证:
library(odbc) sort(unique(odbcListDrivers()[[1]]))
输出结果如下:
[1] "Amazon Redshift (x64)" "HDBODBC" "ODBC Driver 17 for SQL Server" "PostgreSQL ANSI(x64)" "PostgreSQL Unicode(x64)" [6] "SQL Server"
连接报错情况
我在配置DSN时已经填写了IP和端口,但连接时出现了两种不同的错误:
1. 通过DSN连接报错
执行连接代码:
library(odbc) con <- dbConnect(odbc(), "HAN")
得到错误信息:
Error: nanodbc/nanodbc.cpp:983: HY000: [SAP AG][LIBODBCHDB DLL][HDBODBC] General error;1033 error while parsing protocol
2. 不通过DSN直接连接报错
执行连接代码:
library(DBI) con <- dbConnect(odbc::odbc(), driver = "HDBODBC", uid = "<user>", pwd = "<pass>", host = "<ip>", port = <port>)
得到错误信息:
Error: nanodbc/nanodbc.cpp:983: HY000: [SAP AG][LIBODBCHDB DLL][HDBODBC] General error;-10719 Connect failed (invalid SERVERNODE '')
补充排查信息
目前我通过Tableau以及RJDBC(Java驱动)可以成功连接到SAP HANA,但RJDBC的性能极差,RJDBC的连接代码如下:
jdbcDriver <- JDBC(driverClass="com.sap.db.jdbc.Driver", classPath="C:\\Program Files\\SAP\\hdbclient\\ngdbc.jar") jdbcConnection <- dbConnect(jdbcDriver, "jdbc:sap://<ip>:<port>/?autocommit=false", "<username>", key_get("<service>", keyring = "<keyring>"))
环境版本信息
- Windows:Microsoft Windows 10 Enterprise 10.0.18363,x64架构
- R:R version 3.6.3 (2020-02-29),运行于x86_64-w64-mingw32平台
内容的提问来源于stack exchange,提问作者Mohamed Mostafa El-Sayyad
相关产品推荐
相关产品推荐

