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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:47:24