ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Windows下SAP HANA ODBC驱动安装与Excel连接配置实战

Windows下SAP HANA ODBC驱动安装与Excel连接配置实战 简介面向 Windows x86_64 平台的 SAP HANA 客户端 ODBC 驱动程序包适用于需要在 Windows 环境连接 SAP HANA 的开发、测试与运维人员可用于配置 ODBC 数据源、调用 HANA 客户端工具以及为 Java、Python、Node.js、Golang 等语言搭建应用接入环境。压缩包共含 64 个文件大小约 71.53MB其中 21 个 tgz 为可选组件子包覆盖 JDBC、ODBC、SQLDBC、Python、Node.js、Golang 等访问接口19 个 dll 为运行依赖库可避免单独下载 Visual C 等运行环境13 个 pm 为 Perl 脚本模块便于用脚本方式操作 HANA另有 5 个 exe 负责安装、卸载与注册并附带少量配置、说明和签名校验文件。整体目录结构清晰解压后即可按需选择模块安装。已有 2553 人学习下载对于需要在离线或内网环境部署 HANA 客户端、快速搭建测试环境或将客户端组件集成进自动运维流程的读者能够有效减少查找与匹配版本的时间规避驱动和依赖库不兼容的常见问题。 聊到 SAP HANA 的数据接入很多从 Oracle、SQL Server 转过来的朋友第一反应是拿现成的 JDBC/ODBC 驱动去连。结果在 Windows 上折腾半天不是装不上驱动就是装上了但 Excel、Power BI 根本看不到数据源。我这两年帮客户做 HANA 迁移和报表取数踩过的坑基本都集中在SAP_HANA_ODBC_Driver_hdb_client_windows_x86_64.zip这个安装包上。这篇就把我实际装驱动、配 DSN、调 Excel 连接的全过程拆开讲一遍重点是那些不写在官方文档里的细节和排查思路。不管你是 BI 工程师、数据运维还是被老板临时拉去接数的业务分析师只要需要在 Windows 上把 HANA 的数据弄到 Excel 或其他工具里这篇文章都适用。1. hdb_client 安装包到底装了什么1.1 一个 zip 包装了半个 SAP 客户端全家桶很多人第一次看到这个包名会以为它只是一个 ODBC 驱动其实hdb_client是 SAP HANA 的客户端套件ODBC 驱动只是里面的一个组件。这个 zip 解压后核心是setup.exe和hdbsetup.exe两个安装程序外加一批 DLL 和配置文件。安装完成后你会在默认路径C:\Program Files\SAP\hdbclient下看到这些关键文件odbc/lib/SAPHDBODBC.dll这是 ODBC 驱动本体所有连接都靠它hdbuserstore.exe用来保存连接凭据的小工具后面解决 Excel 每次输密码就靠它hdbsql.exe命令行查询工具可以用来快速验证连接是否正常libsapdbc.dllJDBC 驱动虽然名字带 JDBC但安装时也会带上我见过不少同事把hdb_client当成一个单纯的 ODBC 驱动来对待装完发现系统里多了一堆东西误以为装错了又给卸了。其实这是正常现象客户端套件本来就是让开发工具、管理工具、接口驱动共用一个安装包方便统一管理版本。1.2 为什么选 hdb_client 而不是单独找 ODBC 驱动SAP 官方其实也提供独立的 ODBC 驱动安装包叫SAP HANA ODBC Driver但实际生产环境里我更推荐直接装hdb_client原因有两个第一版本一致性。hdb_client 里的所有组件统一对应某个 HANA 版本比如 2.0 SPS 05 的客户端里面的 ODBC 驱动、hdbsql、userstore 都是同一个版本号不会出现驱动能连但工具连不上的版本错位问题。第二排查方便。连接 HANA 出问题时你可以直接用同一套客户端里的 hdbsql 去连如果 hdbsql 能连上而 Excel 连不上说明问题出在 ODBC 层配置如果两者都连不上那基本可以确定是网络、账号或 HANA 侧的问题。有了这个对比手段排查效率会高很多。还有一个容易被忽略的点如果你管理的环境里既有 32 位又有 64 位程序需要连 HANA那么装 hdb_client 时它会在两个位置分别注册驱动一套安装全搞定。独立 ODBC 驱动包反而经常要手动处理两个位数的问题。2. Windows 下安装 hdb_client 的完整步骤2.1 安装前的环境检查别急着双击 setup.exe先把这三件事确认好不然大概率白装一遍。确认 Windows 版本和位数。这个包名里的windows_x86_64已经告诉你了它只支持 64 位 Windows。安装前在“设置 - 系统 - 关于”里看一眼系统类型如果是 32 位系统这个包装不了。虽然现在 32 位系统很少见了但我真遇到过客户的一台旧报表服务器是 32 位的卡了半天才发现是系统位数不对。确认磁盘空间和权限。安装包解压后大概 300MB安装后约 1.2GB。安装过程需要写C:\Program Files所以要以管理员身份运行安装程序。右键 setup.exe选择“以管理员身份运行”这一步不能省否则装到一半会报权限错误然后留下一个半残的安装目录卸载都不好卸。确认 .NET Framework 版本。新版 hdb_client 安装程序依赖 .NET Framework 4.6.2 或更高版本。Win10 和 Win11 一般都自带了但 Windows Server 2012 R2 这种老系统可能要先补一个 .NET Framework 更新才能跑起来。2.2 安装过程的几个关键选项整个安装过程比较傻瓜化一路 Next 就行但有两个界面需要特别注意。第一个是Select components组件选择界面。很多人手一滑只勾了 ODBC把 hdbsql 和 hdbuserstore 给漏了。我的建议是全部勾上一个不落。hdbsql 不仅是排查工具还是写自动化脚本的好帮手hdbuserstore 后面解决 Excel 密码问题会用到现在不装后面还得补装。第二个是Select installation folder安装路径界面。默认路径没问题就直接用默认的。如果自定义路径尽量别用带空格的路径虽然新版驱动兼容带有空格的路径但某些老程序在解析连接字符串时会把空格截断这种问题排查起来非常隐蔽。安装完成后建议重启一下电脑。ODBC 驱动的注册表信息在安装时就写入了但某些系统的环境变量刷新不及时重启一下最保险。2.3 安装成功后的验证方法装完之后怎么确认驱动真的能用别直接去开 Excel先用命令行跑一个快速验证。打开命令提示符CMD进入 hdbclient 目录执行cd C:\Program Files\SAP\hdbclient hdbsql -n 192.168.1.100:39015 -u SYSTEM -p YourPassword select * from dummy如果能返回一条dummy记录说明驱动、网络、账号密码都正常。这一步验证通过的含金量非常高因为如果把网络问题和 ODBC 配置问题混在一起排查会非常浪费时间。然后检查 ODBC 驱动是否注册成功。打开“ODBC 数据源管理器”在“驱动程序”选项卡里找SAP HANA ODBC Driver。这里有个重要的坑64 位系统上有两个 ODBC 管理器。64 位的C:\Windows\System32\odbcad32.exe32 位的C:\Windows\SysWOW64\odbcad32.exe名字非常反人类System32目录下是 64 位的SysWOW64目录下反而是 32 位的。很多教程只让你打开“控制面板 - 管理工具 - ODBC 数据源”在 64 位系统上默认打开的是 64 位管理器如果你装的 Excel 是 32 位的它在 32 位管理器里找不到驱动就会报“找不到驱动”的错误。我的做法是两个管理器都打开看一眼确认两个位数下都能看到SAP HANA ODBC Driver。如果只有 64 位能看到而 32 位看不到说明安装时 32 位组件没装好需要重新运行安装程序选择“Modify”补装 32 位组件。3. ODBC DSN 配置与连接原理3.1 用户 DSN 和系统 DSN 到底该选哪个ODBC 数据源有两种类型用户 DSN和系统 DSN。两者的区别在于类型可见范围是否需管理员权限谁可以用用户 DSN当前 Windows 用户不需要仅限当前用户系统 DSN本机所有用户需要所有用户和 Windows 服务我在给客户做报表项目时一般推荐配系统 DSN尤其是那些需要定时刷新、由计划任务或 Windows 服务触发的取数场景。因为计划任务运行时的账户可能和你当前登录的账户不是同一个用户 DSN 在那个账户下根本看不到。但要注意配置系统 DSN 必须用管理员身份打开 ODBC 管理器否则保存时会报错“无法写入系统 DSN”。3.2 一步步配置 HANA 系统 DSN按Win R输入odbcad32.exe按Ctrl Shift Enter以管理员身份运行这是 64 位管理器。切到“系统 DSN”选项卡点击“添加”。选择SAP HANA ODBC Driver点击“完成”。填写连接参数Data Source Name填一个能认出来的名字比如SAP_HANA_PRODServerHANA 主机 IP 或主机名比如192.168.1.100PortHANA 的 SQL 端口一般是39015注意不是 30015。30015 是 HANA 系统内部端口想连数据库得用 SQL 端口这点经常有人搞错Database要连接的 HANA 数据库名默认是HXE或SYSTEMDB具体看你的 HANA 实例配置点击“Test Connection”输入用户名和密码如果显示连接成功DSN 就配好了。配置完成后我习惯用一个小命令验证一下 DSN 是否可用打开 CMD 执行cd C:\Program Files\SAP\hdbclient hdbsql -n 192.168.1.100:39015 -u SYSTEM -p YourPassword select database_name from sys.databases这条命令能列出 HANA 上所有数据库比select * from dummy提供的信息更多也更适合验证你配置的 Database 名称是否准确。3.3 连接字符串的两种写法实际应用里除了 DSN很多人还会直接写连接字符串尤其是在 Python、PowerShell 脚本里。两种方式各有适用场景我一起写出来方式一用 DSNDSNSAP_HANA_PROD;UIDSYSTEM;PWDYourPassword;方式二直接指定驱动和服务器DRIVER{SAP HANA ODBC Driver};SERVER192.168.1.100;PORT39015;DATABASEHXE;UIDSYSTEM;PWDYourPassword;方式二的好处是不依赖本机 DSN 配置在有多个环境开发、测试、生产切换时直接在脚本里改连接字符串就行不用去系统里改 DSN。缺点是要在每台运行的机器上都装了驱动否则会报“找不到数据源名称且未指定默认驱动程序”的错误。4. Excel 连接 HANA 的实操与密码问题解决4.1 从 Excel 里拉 HANA 数据配好 DSN 后直接在 Excel 里拉数据就非常简单了。以 Excel 2016 及以上版本为例路径是“数据 - 获取数据 - 从其他源 - 从 ODBC”然后在弹出的窗口里选择你刚配的 DSN。这里有个体验上的小细节如果连接时弹窗要你输入账号密码先别急着嫌烦这是新版本 Excel 的正常行为。默认情况下Excel 不会把 ODBC 凭据保存在本地每次新建查询都会要求输入。对于偶尔手工拉一次数据的场景每次输就每次输吧也就多花五秒。但如果你需要做数据刷新、定时更新报表或者每次拉的数据量很大输密码输到怀疑人生那必须解决持久化的问题。4.2 用 hdbuserstore 彻底解决 Excel 每次输密码解决“Excel 连接 ODBC 每次都要输入密码”的问题正统做法是使用 hdbuserstore 创建密钥文件。它相当于给 HANA 客户端配置一个“钥匙串”里面保存了连接信息之后所有基于 ODBC 的连接在满足条件时都会自动带入凭据不再弹窗。具体操作分三步第一步打开 CMD进入 hdbclient 目录cd C:\Program Files\SAP\hdbclient第二步执行 hdbuserstore 命令创建密钥hdbuserstore SET SAP_HANA_PROD_KEY 192.168.1.100:39015 SYSTEM YourPassword命令说明SET创建或更新密钥SAP_HANA_PROD_KEY密钥名称必须和你在 DSN 里填的 Data Source Name 完全一致192.168.1.100:39015HANA 主机和端口SYSTEM YourPassword用户名和密码第三步验证密钥是否生效hdbuserstore LIST看到刚创建的密钥说明保存成功。此时再回到 Excel 新建 ODBC 查询选择同一个 DSN就不会再弹密码框了。4.3 密钥不生效的排查思路如果你做完了上面三步发现在 Excel 里还是会弹密码框大概率是这两个问题一是Excel 位数和驱动位数不一致。hdbuserstore 默认把密钥写到当前执行命令的位数对应的位置。比如你用 64 位 CMD 创建了密钥而你的 Excel 是 32 位的它读取的是 32 位密钥目录两边对不上自然找不到凭据。解决办法是用 32 位的 CMDC:\Windows\SysWOW64\cmd.exe重新执行一遍hdbuserstore SET命令两条路径各存一份。二是DSN 名称和密钥名称不一致。hdbuserstore 的匹配规则是按名字找的比如你在 ODBC 里把数据源的名字从SAP_HANA_PROD改成了SAP_HANA_PROD_NEW而密钥名还是老的同样会失效。改 DSN 名后记得同步更新 hdbuserstore 里的密钥。这个方法同样适用于 Power BI、Tableau 等其他工具。只要是基于 ODBC 连接 HANA 的hdbuserstore 都能把凭据管理起来属于一次性配置、长期受益的操作。4.4 敏感场景下的密码处理建议这里顺便提一个安全提醒。如果你的环境对安全性要求较高或者多个人共用一台机器hdbuserstore 里保存的是明文可还原的凭据其他用户只要用管理员权限执行hdbuserstore LIST就能看到你配置了哪些目标虽然密码本身是加密存储的但客户端凭据能访问到 HANA 账号这个风险要心里有数。更稳妥的做法不给客户端配置 SYSTEM 这种管理员账号而是建一个只读账号权限只够 select 报表所需视图和表。比如CREATE USER REPORT_USER PASSWORD YourPassword NO FORCE_FIRST_PASSWORD_CHANGE; GRANT SELECT ON SCHEMA SAPABAP1 TO REPORT_USER;这样就算密钥泄露影响也控制在只读范围内。我在客户现场一直推荐这个方案既能满足 Excel 自动刷新又不会把管理员密码落到每台报表电脑上。5. 常见报错与排查技巧实录5.1 报错速查表下面这些报错是我在 Windows 上折腾 HANA ODBC 连接时遇到过的典型问题按出现频率从高到低整理成表格方便你直接用。报错信息关键词可能原因解决方法找不到数据源名称且未指定默认驱动程序驱动未安装或 ODBC 管理器位数不对确认用对应位数32/64的 odbcad32.exe 查看驱动Cannot open driver驱动 DLL 加载失败重新安装 hdb_client确认文件不被杀软拦截Protocol error / Connection refused端口错误或 HANA 未启动确认使用 SQL 端口 39015 而非内部端口 30015User is not authorizedHANA 账号没有相应权限检查 HANA 侧角色和权限或换有权限的账号SSL certificate verification failedHANA 启用了 TLS客户端证书校验失败在 DSN 配置中勾选 Allows Self-signed Certificate仅测试环境生产环境应配置正确的 CA 证书[SAP][ODBC Driver] Driver not capable执行了驱动不支持的 SQL 操作检查 SQL 语法HANA ODBC 驱动的 SQL 兼容性和 HANA SQL 方言有关内存不足或无法分配内存客户端架构和 HANA 服务器版本不匹配更新 hdb_client 到与 HANA 版本匹配的较新版本5.2 让我印象最深的三个隐蔽问题问题一Windows Server 上杀毒软件拦截驱动 DLL有一次客户在 Windows Server 2016 上装了 hdb_client驱动列表里能看到SAP HANA ODBC Driver但一点 Test Connection 就报“Cannot open driver”。系统日志里显示SAPHDBODBC.dll加载失败。查了半天最终发现是客户的 Symantec 杀毒软件把ntwdblib.dllSQL Server 的客户端库和 SAP HANA 的 ODBC DLL 当成可疑文件隔离了。把 hdbclient 目录加入白名单后问题解决。这个问题的坑在于杀毒软件不会直接报“我拦截了”而是让 DLL 加载静默失败排查的时候很容易绕弯路。问题二Excel 32 位和 64 位混用导致的 DSN 混乱客户的电脑上装了 Office 2016 32 位但在 ODBC 管理器里看到驱动已经注册成功Excel 里却始终提示找不到驱动。原因是客户看的是 64 位 ODBC 管理器Excel 是 32 位程序它读取的是 32 位注册表和驱动列表。这是 ODBC 在 Windows 上最容易踩的坑我把判断口诀告诉你**Excel 是 32 位的就用 32 位 ODBC 管理器Excel 是 64 位的就用 64 位 ODBC 管理器。**不要想当然直接看 Excel 的“关于”页面确认位数即可。问题三端口连接超时但 HANA 明明没宕机客户在虚拟机里跑 HANA ExpressWindows 防火墙里特意放行了 39015 端口但 hdbsql 连上去还是报超时。我让客户在 HANA 所在的 Linux 机器上执行ss -lnt | grep 39015发现端口根本没监听。最后查出来HANA Express 的 SQL 端口不是 39015而是 39017因为 HANA Express 的多租户配置里系统数据库和租户数据库的端口不一致。这个问题提醒我默认端口仅供参考实际端口要以 HANA 的services文件为准。在 HANA 机器上执行SELECT * FROM M_SERVICES WHERE SERVICE_NAMEINDEXSERVER就能查到真正的 SQL 端口。5.3 排查标准流程分三层定位踩过这么多坑之后我给自己定了一个排查标准流程遇到任何 HANA 连接问题都按这个顺序走第一层确认 HANA 可达。在 Windows 上执行ping、telnet IP 端口只要端口能通说明网络层没问题。如果连不通先查防火墙、安全组、虚拟网络配置。第二层确认驱动可用。用 hdbsql 直接连这一步排除了 ODBC 配置干扰。hdbsql 能连上说明驱动安装、网络、账号密码都 OK问题肯定在 ODBC 配置层hdbsql 也连不上问题在网络或 HANA 侧。第三层确认 ODBC 配置正确。检查 DSN 名称、端口、数据库名、ODBC 管理器位数、hdbuserstore 密钥是否匹配打开 ODBC 管理器里的 Trace Log 功能把连接日志打开详细报错会写进日志文件。这套流程在绝大多数场景下都能快速定位问题我建议把它抄下来贴到工位上每次连接出问题就按这个顺序排查比在论坛里盲搜靠谱得多。6. 最终可能被忽略的小技巧最后分享两个我平时用得比较多的技巧都是文档里不一定会写、但实际非常省事的点。第一个用 PowerShell 检测驱动安装状态。查驱动是否注册成功不一定要打开 ODBC 管理器直接执行下面这条命令更快Get-OdbcDriver | Where-Object {$_.Name -like *SAP HANA*} | Format-List Name, Platform输出结果里的Platform字段会明确告诉你这个驱动是 32 位还是 64 位一眼就能看出位数对不对比在 GUI 里翻来翻去快多了。第二个连接字符串里去掉 PWD输入更安全。如果你是用 Python 或 PowerShell 写自动化报表把密码硬编码在脚本里万一脚本传出去密码就跟着泄露了。建议改用 hdbuserstore连接字符串里只写UID和KEY比如DSNSAP_HANA_PROD;UIDSYSTEM;KEYSAP_HANA_PROD_KEY这样密码不落地密钥文件只有本机可读兼顾了自动化和安全性。我在给客户交付取数工具时密码一律不放脚本全部走 hdbuserstore后来客户回访时说这个做法让他们省了不少安全审查的麻烦。整个 Windows 下用 ODBC 连接 HANA 的流程其实就是三个环节装对驱动、配好 DSN、搞定凭据。每个环节都有几个反直觉的小坑但只要理清了思路基本都能一次性搞通。如果你在配置过程中遇到这里没写到的报错欢迎留下报错信息我来帮你一起看看。本文还有配套的精品资源点击获取
返回列表