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

通过ODBC将SSIS连接Snowflake时的JWT认证失败问题排查

SSIS连接Snowflake JWT认证报错:Marshaling private key failed 解决思路

可能的原因及解决办法

1. 32位进程的私钥路径/权限问题

  • SSIS使用32位ODBC驱动时,进程对UNC路径的访问权限可能和64位的DBeaver不同:
    • 检查SSIS运行账户(开发环境为当前登录用户,生产环境为SQL Server代理账户)是否拥有[unc location]\rsa_key.p8的共享权限和NTFS权限,确保能读取该文件。
    • 临时将私钥复制到本地路径(如C:\SnowflakeKeys\rsa_key.p8),修改连接字符串中的priv_key_file为本地路径,验证是否能连接,排除UNC路径的问题。

2. 私钥文件格式/编码问题

  • 确保.p8私钥文件是纯文本无额外格式:
    • 用记事本打开私钥,检查是否有多余的换行、空格,或者UTF-8 BOM(32位驱动可能对BOM敏感),可另存为UTF-8 无BOM或ANSI格式后重试。
    • 从DBeaver中导出正在使用的私钥(确保是未损坏的版本),替换原有文件后测试。

3. ODBC驱动版本与配置细节

  • 升级到最新版32位Snowflake ODBC驱动:旧版本对JWT认证的支持可能存在bug,卸载旧驱动后重新安装最新版,重启SSIS设计器再测试。
  • 验证连接字符串中的驱动名称:打开32位ODBC管理器(C:\Windows\SysWOW64\odbcad32.exe),查看已安装驱动的准确名称,确保连接字符串中Driver={xxx}的名称完全匹配(比如部分版本驱动名为SnowflakeDSI而非SnowflakeDSIIDriver)。

4. 私钥密码参数缺失

如果你的.p8私钥设置了密码,连接字符串必须显式添加priv_key_pwd=[你的私钥密码]参数。DBeaver可能会自动保存密码,但SSIS不会读取隐式凭据,必须在连接字符串中指定。


SSIS vs ADF 选型补充建议

  • 如果SSIS的JWT认证问题无法快速解决,或后续有大量云原生数据集成需求,Azure Data Factory (ADF) 是更适配的选择:ADF提供原生Snowflake连接器,无需依赖ODBC,配置更简洁,且支持管道版本控制、监控、弹性伸缩等云特性。
  • 若现有SSIS流程复杂、重写成本极高,可考虑使用Azure上的SSIS Integration Runtime (IR):将现有SSIS包部署到Azure托管的IR运行,既保留现有资产,又能更好地对接Snowflake云服务,避免本地环境的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:47:45