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

SSIS脚本任务中ADO.Net引用异常:DataReader Source不存在于集合

问题原因及解决办法

核心差异:运行上下文与组件加载机制

控制台应用和SSIS脚本任务的运行环境存在本质区别,导致Application.PipelineComponentInfos的行为不一致:

  • 控制台应用:在用户桌面上下文运行,能够完整读取系统中注册的所有SSIS组件信息,包括DataReader Source这类扩展组件,因此app.PipelineComponentInfos["DataReader Source"]可以正常找到目标组件。
  • SSIS脚本任务:运行在SSIS包的受限执行上下文内,Application实例无法访问系统全局注册的完整组件集合,只能读取SSIS运行时默认加载的基础组件,因此找不到DataReader Source的条目。

即使添加了相同版本的DLL引用,脚本任务的运行时环境依然会限制组件信息的读取范围,这是SSIS脚本任务的设计限制。

解决办法

不需要通过Application.PipelineComponentInfos动态获取ClassID,直接硬编码DataReader Source的固定ClassID即可(对应SQL Server 2019版本):

替换报错的最后一行代码:

component1.ComponentClassID = "Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter, Microsoft.SqlServer.ADONETSrc, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91";

或者,如果你需要兼容不同版本,可以通过组件的ProgID直接指定:

component1.ComponentClassID = "DTSAdapter.DataReaderSource.1";

这样就能绕过脚本任务中Application实例无法读取完整组件集合的限制,直接创建DataReader Source组件。

内容的提问来源于stack exchange,提问作者FRReg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:55:17