SSIS包使用64位ODBC连接通过SQL Server Agent执行失败原因问询
错误原因分析
你遇到的手动执行SSIS包正常、SQL Server Agent作业执行报错的场景,核心是两类执行上下文的配置差异导致,具体原因按高发优先级排序如下:
1. 作业运行时架构不匹配
- SQL Server Agent调用SSIS运行时的默认配置如果为32位,就会无法加载你配置的64位ODBC驱动,这是该场景下最常见的触发原因。
验证方案:打开对应SQL Server Agent作业的步骤配置,找到「执行选项」标签,取消勾选使用32位运行时的选项后重试。
2. ODBC数据源配置作用域不符
- 如果你配置的64位ODBC数据源是「用户DSN」,只会对你当前登录操作的用户生效,SQL Server Agent作业默认以SQL Server服务账号运行,无法读取普通用户的私有DSN配置。
验证方案:打开64位ODBC数据源管理器(路径:C:\Windows\System32\odbcad32.exe),将你的Athena连接配置为「系统DSN」,确保所有系统用户都能读取到该数据源配置。
3. 作业执行账号权限不足
- SQL Server Agent作业的运行账号没有对应权限:包括访问64位ODBC驱动的权限、Athena连接所需的认证文件(如AWS凭证、密钥文件)读取权限、Athena服务的网络端口访问权限,都会导致连接建立失败。
验证方案:将作业的运行账号临时改为你手动执行SSIS包时使用的账号,测试是否能正常运行,如果可以即可确认是原服务账号权限缺失,补充对应权限即可。
4. SSIS包敏感信息加密规则限制
- 如果你部署SSIS包时使用的是EncryptSensitiveWithUserKey的保护级别,加密的连接密码等敏感信息只有你部署时使用的用户可以解密,SQL Server Agent的运行账号无法解密,就会导致连接调用失败。
验证方案:将SSIS包的保护级别改为EncryptSensitiveWithPassword或者RelyOnServerStorage,部署时配置对应密码或者由SSIS目录托管敏感信息即可。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

