You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory自托管IR升级Exasol ODBC驱动仍调用旧版本问题

根因说明

你遇到的驱动版本随机加载问题,本质是Windows Installer(MSI)回滚机制异常+Self-Hosted IR(SHIR)进程锁文件+Windows DLL搜索优先级共同导致的,不存在ADF层面的驱动缓存:

  • 你用Process Monitor抓到的C:\Config.Msi\路径是MSI执行安装/卸载事务时生成的临时系统隐藏目录,仅在事务运行窗口内可见,事务正常结束后会被系统自动删除。你卸载Exasol ODBC v6时,因为SHIR相关进程正在占用v6驱动的DLL文件,导致MSI卸载流程异常中断,存放在该临时回滚目录下的v6驱动DLL被SHIR进程锁死,触发NTFS的挂起删除机制:资源管理器中看不到C:\Config.Msi\目录,但持有文件句柄的SHIR进程依然可以正常读取这些残留的v6 DLL文件,直到进程退出。
  • 不同测试场景加载不同版本驱动的原因是加载逻辑的会话上下文差异:
    • 本机IR配置管理器、Linked Service测试连接运行在当前登录用户的交互式会话下,ODBC加载逻辑会直接读取系统注册表中注册的ODBC驱动路径,也就是你安装的v7驱动,因此始终加载v7版本。
    • Dataset测试连接、实际管道作业运行在SHIR后台服务进程上下文(默认运行账号为NT SERVICE\DIAHostService,非交互式会话),该场景下Windows的DLL搜索顺序会优先命中进程已加载的内存模块、进程持有句柄的残留临时文件,之后才会读取系统注册的驱动路径,因此会随机加载到残留的v6驱动。这也解释了为什么你把系统中注册的v6驱动完全删除后,SHIR依然可以通过残留DLL正常连接Exasol。
修复步骤
  • 完全退出所有SHIR相关进程:先停止Microsoft Integration Runtime Service后台服务,再结束任务管理器中所有diahost.exe、diawp.exe、Microsoft.IntegrationRuntime.ConfigurationManager.exe进程,释放对残留DLL的文件锁。
  • 打开资源管理器,开启「显示隐藏的系统文件」选项,删除C:\Config.Msi\整个目录(此时目录会正常可见),同时检查以下路径下是否存在Exasol ODBC v6相关的残留DLL,找到后直接删除:
    • C:\Windows\Temp\
    • SHIR默认安装目录下的驱动缓存路径:C:\Program Files\Microsoft Integration Runtime\5.0\Gateway\ODBC Drivers\
  • 打开64位ODBC数据源管理器,切换到「驱动」标签页,确认Exasol v6驱动条目已完全清除;如果仍有残留,手动删除注册表路径HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI下所有对应Exasol v6的子项。
  • 重启SHIR后台服务,重新测试Linked Service、Dataset连接,所有请求会统一加载正确安装的v7版本驱动。

内容的提问来源于stack exchange,提问作者GriGrim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 23:18:30