SSIS包部署至SQL Server 2019后出现DSN架构不匹配错误求助
SSIS部署后ODBC架构不匹配错误解答
错误信息中的“Application”指什么?
这里的“Application”指的是执行SSIS包的进程。在SQL Server上部署后,包由SQL Server Integration Services(SSIS)服务启动的DTSHost.exe进程执行,而非Visual Studio里的调试进程。如果该进程是64位的,却尝试调用32位ODBC驱动,就会触发“架构不匹配”错误——因为64位进程无法直接加载32位的驱动组件。
解决方法
1. 强制以32位模式运行SSIS包
- 若通过SQL Server代理作业运行:在作业步骤的“执行SSIS包”配置界面,切换到“高级”选项卡,勾选“使用32位运行时”,SSIS会启动32位版本的
DTSHost.exe执行包,匹配32位ODBC驱动架构。 - 若用命令行(DTExec)运行:使用32位版本的DTExec工具,路径通常为
C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\DTExec.exe(SQL Server 2019对应版本号为150)。
2. 匹配ODBC数据源与运行进程的架构
- 若要保持64位运行:打开64位ODBC数据源管理器(路径
C:\Windows\System32\odbcad32.exe),创建对应数据源的64位版本,确保驱动和数据源均为64位架构。 - 若必须使用32位驱动:打开32位ODBC数据源管理器(路径
C:\Windows\SysWOW64\odbcad32.exe),创建32位版本的数据源,再配合方法1强制32位运行包。
3. 调整脚本任务的ODBC调用逻辑(备选)
如果前两种方法无法满足需求,可在C#脚本任务中明确指定加载32位ODBC驱动的方式(比如通过P/Invoke调用32位ODBC API),但这种方式复杂度较高,仅推荐在前两种方法不可行时尝试。
内容的提问来源于stack exchange,提问作者JoeFoster
相关产品推荐
相关产品推荐

