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

请求协助:SSIS通过ODBC连接SSH PostgreSQL时出现连接失败问题

解决SSIS通过ODBC向PostgreSQL插入数据时的连接错误

核心排查与修复步骤

  • 核对SSIS运行的权限上下文
    SSIS默认用SQL Server代理服务账户(或手动运行时的本地账户)执行,和你在SSMS/自定义程序里用的当前登录账户权限可能不一致:

    • 手动运行包时,右键以管理员身份启动Visual Studio/SSDT后再测试连接
    • 通过SQL Server代理执行时,确认代理服务账户能访问ODBC数据源——优先用系统DSN(所有账户可见),别用仅当前账户能访问的用户DSN
  • 严格匹配ODBC驱动与SSIS的位数
    SSIS项目的目标平台(32位/64位)必须和PostgreSQL ODBC驱动位数完全对应:

    • 32位SSIS项目:用C:\Windows\SysWOW64\odbcad32.exe配置32位数据源
    • 64位SSIS项目:用C:\Windows\System32\odbcad32.exe配置64位数据源
      位数混用是这类连接错误的高频原因。
  • 确认SSH隧道的一致性
    既然是通过SSH连接PostgreSQL,要保证SSIS运行环境的隧道状态和测试环境一致:

    • 检查隧道是否在SSIS运行时处于活跃状态,避免手动测试时隧道开启、SSIS运行时隧道关闭的情况
    • 确认隧道的本地映射地址、端口和ODBC配置完全匹配,且隧道允许SSIS运行账户访问本地映射端口
  • 改用连接字符串直接配置ODBC连接
    跳过已有的DSN,在SSIS连接管理器里直接用连接字符串配置,规避DSN的环境差异:
    示例连接字符串(按需替换实际参数):

    Driver={PostgreSQL Unicode};Server=127.0.0.1;Port=5432;Database=your_db_name;Uid=your_username;Pwd=your_password;
    

    注意这里的Server和Port是SSH隧道映射后的本地地址,不是远程PostgreSQL的真实地址。

  • 获取详细错误日志定位问题
    开启SSIS详细日志,抓驱动层面的具体错误:

    1. 在SSIS项目中启用日志,勾选“ODBC连接管理器”相关事件
    2. 运行包后查看日志,通常会给出更具体的报错(比如权限不足、隧道超时等)

额外提示

  • 确保PostgreSQL ODBC驱动是最新版本,旧版本可能和SSIS存在兼容性问题
  • 如果通过代理访问SSH,确认SSIS运行账户的代理配置和测试时一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:41:14