从2008年迁移到2016年后,父包变量配置无法正常工作

时间:2019-09-04 09:51:55

标签: ssis ssis-2008 ssis-2016

我有一组现在要迁移到 ssis 2016 ssis 2008 软件包。我使用了 VS数据工具2015 来迁移软件包。包已成功迁移,几乎没有涉及我已处理的脚本任务的警告。

现在,其中一个软件包具有 execute软件包任务,该任务又称为子软件包。使用变量(使用表达式)设置父包和子包的连接管理器。父程序包的连接字符串变量是通过 c#代码设置的,并且按预期工作。子程序包的连接字符串变量是使用父程序包变量配置设置的。

所以简而言之:

  • 父程序包:variable connstring:通过 c#代码设置
  • 子软件包:variable connstringchild:从父软件包connstring设置。

Delay validation对于父包中的 package execute 任务为true。 在子包delay validation中,对于每个容器和使用connManager以及连接管理器的 sql 任务,为true。 我还尝试在两个软件包的软件包级别上将delay validation设置为true。

仍然,当父包被执行时,它在此执行包任务中失败,并显示以下错误:

SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. 
Error code: 0x80004005.  An OLE DB record is available.  
Source: "Microsoft OLE DB Provider for ODBC Drivers"  
Hresult: 0x80004005  
Description: "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified". 

从错误中我猜测是连接字符串的子程序包变量没有任何值,因此是错误。 尝试执行更多日志记录,并且在出现此错误之后,程序包继续执行,并设置了配置值,执行完成。但是,由于最大错误计数超过了,包的最终结果将以failed的形式返回。

从我在google和此处进行的搜索来看,如果delay validation设置为true,则此变量验证不应在执行之前进行。但是不知何故,它在验证之前就失败了。 2008软件包运行正常,没有任何问题。

请注意,使用 ManagedDTS 程序集从 asp.net C#代码执行了父程序包。

有人遇到过这样的问题吗?请提供任何建议或解决方案。已经被卡住了两个多星期了!

0 个答案:

没有答案