VS2019升级至VS2022后SSIS.ReplacementTask异常问题求助
SSIS包在VS2022中打开异常的解决方法(无需回退旧版)
问题概述
从VS2019升级至VS2022后,多数SSIS包运行正常,但一个2012年创建的旧包出现以下异常:
- 打开时弹出3条**“无法创建名为OLEDB的类型”**错误,涉及2个MS SQL驱动和1个Sybase Anywhere驱动,对应的
.conmgr文件与其他正常连接管理器无差异 - 错误弹窗关闭后包可打开,但所有任务均显示为
SSIS.ReplacementTask - 任务XML代码变化对比:
打开前(正常XML)
<DTS:Executable DTS:refId="Package\Truncate the table" DTS:CreationName="Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask.ExecuteSQLTask, Microsoft.SqlServer.SQLTask, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" DTS:Description="Execute SQL Task" DTS:DTSID="{e9f3593b-2212-46c1-9390-259186485c23}" DTS:ExecutableType="Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask.ExecuteSQLTask, Microsoft.SqlServer.SQLTask, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" DTS:LocaleID="-1" DTS:ObjectName="Truncate the table" DTS:ThreadHint="0"> <DTS:Variables /> DTS:ObjectData <SQLTask:SqlTaskData SQLTask:Connection="{DD6263AC-CC36-4A31-A57A-ECE18694CBEF}" SQLTask:SqlStatementSource="TRUNCATE TABLE [table1] " xmlns:SQLTask="www.microsoft.com/sqlserver/dts/tasks/sqltask" /> </DTS:ObjectData> </DTS:Executable>打开后(异常XML)
<DTS:Executable DTS:refId="Package\Truncate the table" DTS:CreationName="SSIS.ReplacementTask" DTS:DTSID="{e9f3593b-2212-46c1-9390-259186485c23}" DTS:ExecutableType="SSIS.ReplacementTask" DTS:LocaleID="-1" DTS:ObjectName="Truncate the table"> <DTS:Variables /> DTS:ObjectData <SQLTask:SqlTaskData SQLTask:Connection="{DD6263AC-CC36-4A31-A57A-ECE18694CBEF}" SQLTask:SqlStatementSource="TRUNCATE TABLE [Table1] " xmlns:SQLTask="www.microsoft.com/sqlserver/dts/tasks/sqltask" /> </DTS:ObjectData> </DTS:Executable>
无需回退的解决方法
1. 手动更新包的XML版本依赖
关闭VS2022,直接编辑异常包的.dtsx文件:
- 批量将所有旧版本程序集引用(如
Version=11.0.0.0)替换为VS2022对应的SSIS版本(通常为Version=16.0.0.0) - 示例:将
Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask.ExecuteSQLTask, Microsoft.SqlServer.SQLTask, Version=11.0.0.0, ...替换为Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask.ExecuteSQLTask, Microsoft.SqlServer.SQLTask, Version=16.0.0.0, ... - 确保覆盖所有任务、连接管理器的版本字段
2. 重新注册OLEDB驱动
以管理员身份运行命令提示符,重新注册对应驱动:
- MS SQL OLEDB驱动:安装最新版
Microsoft OLE DB Driver for SQL Server后执行(路径根据实际版本调整)regsvr32 "C:\Program Files\Microsoft SQL Server\Client SDK\OLEDB\190\sqloledb19.dll" - Sybase Anywhere OLEDB驱动:找到对应版本的
dbole32.dll(通常在Sybase安装目录)后执行regsvr32 "C:\Program Files\SAP\SQL Anywhere 17\Bin64\dbole32.dll"
3. 使用SSIS官方升级向导
在VS2022中通过官方向导升级包:
- 右键点击项目中的异常包,选择「升级」
- 按照向导步骤完成版本升级,系统会自动处理大部分程序集引用和驱动兼容性问题
4. 修复SSDT安装
打开VS Installer,选择「修改」VS2022安装:
- 确保勾选**SQL Server Data Tools (SSDT)**的完整组件,特别是所有「SSIS」相关子项
- 完成修复后重启VS
5. 检查连接管理器Provider属性
打开.conmgr文件,确认OLEDB连接的Provider属性为VS2022支持的版本:
- MS SQL连接:使用
SQLNCLI11.1或MSOLEDBSQL(避免旧版SQLOLEDB) - Sybase Anywhere连接:确保
Provider值与当前安装的Sybase OLEDB驱动版本匹配
内容的提问来源于stack exchange,提问作者Henrov
相关产品推荐
相关产品推荐

