包含Attuinity Oracle连接器的SSIS 2015包迁移至SSIS 2022及VS 2022打开失败问题咨询
你好,遇到这个问题确实挺闹心的,我来帮你梳理下可行的解决思路——那个「Object reference not set to instance of the object」报错,本质就是VS2022的SSIS工具不再支持Attuinity这类旧第三方连接器,导致无法识别对应组件引发的空引用异常。
下面是几个可以尝试的方案:
替换为官方Oracle连接器(最稳妥的长期方案)
先卸载系统里的Attuinity组件,然后在VS2022中安装官方的Oracle Connector for SSIS(需要依赖ODP.NET环境)。安装完成后打开你的SSIS包,手动把所有用到Attuinity的数据源、数据转换组件,逐一替换成官方Oracle连接器的对应组件。替换时一定要仔细核对连接字符串、字段映射、查询逻辑这些配置,避免出现数据流转问题。借助中间版本VS过渡
如果手里有VS2019,可以先在VS2019中打开这个SSIS 2015包(VS2019对旧组件的兼容性相对好一点),先完成Attuinity组件的替换工作,再把包升级到SSIS 2022版本,最后用VS2022打开就不会有问题了。用SSIS包迁移向导辅助转换
你可以试试SQL Server自带的SSIS包迁移向导(在SSMS或者VS的SSIS工具面板里都能找到),它会自动扫描包中的不兼容组件,给出替换建议。不过针对Attuinity这种第三方组件,向导没法自动替换,还是需要你手动完成组件替换,但它能帮你定位到所有需要修改的地方,省不少事。手动编辑包的XML结构(进阶操作)
如果你对SSIS包的XML结构比较熟悉,可以备份原包后直接编辑.dtsx文件,找到所有和Attuinity相关的节点(比如连接管理器里的Provider属性),把它们替换成官方Oracle连接器的Provider值(比如OraOLEDB.Oracle)。这个方法要小心操作,建议只在其他方案都行不通的时候尝试。
最后一定要提醒你:不管用哪种方法,操作前务必备份好原有的SSIS解决方案和所有包,避免意外损坏数据或配置。
备注:内容来源于stack exchange,提问作者Manju Raj

