SSIS问题:无法以32位模式提交包
我之前也碰到过几乎一模一样的问题,SQL Server 2014的SSISDB在调用32位ODBC驱动时确实有几个容易踩的坑,结合我当时的排查经验,给你几个方向试试:
排查步骤和解决方案
1. 确认服务器上32位ODBC驱动的安装与配置
- 登录SQL Server 2014服务器,打开32位ODBC数据源管理器(别搞错成默认的64位版本,路径是
C:\Windows\SysWOW64\odbcad32.exe) - 检查你连接遗留系统的数据源是否在「用户DSN」或「系统DSN」中存在,并且点击「测试连接」能成功。很多人会误操作打开64位管理器,导致配置的数据源根本不被32位SSIS识别。
2. 检查注册表项与执行账户权限
- 针对帖子提到的注册表项,重点查看
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC路径下,对应你使用的驱动的键值是否完整存在。 - SSIS在SSISDB中运行时,使用的是SQL Server代理服务账户(或你手动指定的执行账户),要确保这个账户对上述注册表路径有读取权限。我当时就是卡在这一步——代理账户权限不足,读不到32位ODBC的配置信息,导致包执行失败。
3. 验证SSIS执行环境的32位运行设置
- 除了在配置选项的高级标签勾选「以32位运行」,如果是通过SQL Server代理作业执行包,还要确认作业步骤的「运行选项」里也勾选了「使用32位运行时」——这里很容易漏选,导致设置不生效。
- 如果是直接在SSMS里执行包,除了高级标签的设置,还要检查执行窗口的「运行时」选项是否明确指定为32位。
4. 排查包的数据源配置细节
- 确保SSIS包中的数据源是使用DSN名称配置(而非硬编码连接字符串),如果是直接写连接字符串,要确认字符串里指定的是32位版本的驱动。
- 可以尝试在服务器上用32位的
dtExec.exe手动执行包,获取更详细的错误日志。路径是C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\dtExec.exe,执行命令类似:dtExec.exe /F "你的包路径.dtsx" /Conf "配置文件.dtsConfig",这样的日志会比SSISDB里的提示更具体,能帮你快速定位是驱动找不到还是权限问题。
额外提醒
SQL Server 2014的SSIS对32位驱动的兼容性确实不如Visual Studio调试环境,核心问题大多出在运行环境的权限隔离和配置识别上,按上面的步骤逐一排查,大概率能解决问题。我当时就是调整了代理账户的注册表权限和32位ODBC的配置后,包就正常运行了。
内容的提问来源于stack exchange,提问作者Needaf1x
相关产品推荐
相关产品推荐

