我创建了一个SSIS包(在VS 2013中),其中包含一个包含多个脚本组件的数据流任务。我需要添加另一个与现有数据流任务类似的数据流任务,因此我将其复制并粘贴到包中,并添加了优先级约束,以便新任务在旧任务之后运行。我根据业务需求更改了新数据流任务中脚本组件中的代码,并运行了该程序包。我很快意识到,当新数据流任务运行时,旧数据流中的脚本组件正在执行。奇怪的。
经过一些互联网搜索,我找到了以下页面:
http://kohera.be/blog/sql-server/the-dangers-of-copying-script-components-in-ssis/
其中描述了数据流任务的复制如何不更改新数据流中任何脚本组件中的程序集名称或根名称空间。显然,在运行时,新脚本的汇编将被旧脚本的汇编覆盖。网页上说可以通过将脚本组件复制到另一个程序包,然后再将其复制回原始程序包来解决此问题。大概会更改每个脚本组件的程序集名称。我很高兴它对他有用,但对我没有用。
我还尝试在此处的脚本编辑器中更改程序集名称:
但这也不起作用。旧脚本组件中的代码仍在新数据流中运行。我猜想根目录名称空间需要更改,但是它是灰色的,所以我不能手动更改它。因此,我仍在寻找一种不涉及从头开始重新创建脚本组件的解决方案,因为它们包含多个输出,每个输出中都有许多列。希望你能有一个答案。