use*_*983 6 ssis copy-paste script-component .net-assembly
我创建了一个SSIS包(在VS 2013中),其中包含一个包含多个脚本组件的数据流任务。我需要添加另一个与现有数据流任务类似的数据流任务,因此我将其复制并粘贴到包中,并添加了优先级约束,以便新任务在旧任务之后运行。我根据业务需求更改了新数据流任务中脚本组件中的代码,并运行了该程序包。我很快意识到,当新数据流任务运行时,旧数据流中的脚本组件正在执行。奇怪的。
经过一些互联网搜索,我找到了以下页面:
http://kohera.be/blog/sql-server/the-dangers-of-copying-script-components-in-ssis/
其中描述了数据流任务的复制如何不更改新数据流中任何脚本组件中的程序集名称或根名称空间。显然,在运行时,新脚本的汇编将被旧脚本的汇编覆盖。网页上说可以通过将脚本组件复制到另一个程序包,然后再将其复制回原始程序包来解决此问题。大概会更改每个脚本组件的程序集名称。我很高兴它对他有用,但对我没有用。
我还尝试在此处的脚本编辑器中更改程序集名称:
但这也不起作用。旧脚本组件中的代码仍在新数据流中运行。我猜想根目录名称空间需要更改,但是它是灰色的,所以我不能手动更改它。因此,我仍在寻找一种不涉及从头开始重新创建脚本组件的解决方案,因为它们包含多个输出,每个输出中都有许多列。希望你能有一个答案。
我对你的问题很好奇,因为我过去也遇到过这种情况,我通过简单地重新创建脚本组件并复制相关代码来纠正。显然比想法少,但是......
无论如何,我通过查看记事本中的 dtsx 包(注意它只是 xml)确认复制的问题是应用程序/命名空间保持不变,因此在编译时,一个会覆盖另一个。
我发现了一个很好的博客,介绍了一种方法Sript Task(http://agilebi.com/jwelch/2008/04/30/renaming-the-script-project-in-ssis-2008/),但相同的解决方案并没有看起来它在 a 中不可用,Script Component因为后者没有可用的表达式......
脚本组件方法 - 测试成功
然而,我确实重现了问题并找到了解决方案。诚然,我不确定我的解决方案是否比重新创建脚本组件并在脚本中复制更容易。无论如何,DTSX 是一个 XML 文件,因此您可以直接编辑它!就我的情况和可能的标准而言,我必须更改 10 个位置的值。所以
创建包裹的备份副本以防万一!
脚本任务方法 - 测试成功
Script task如果您在控制流中讨论,那么这是一个简单的方法。
propertiesofScript task并选择ExpressionsScriptProjectName| 归档时间: |
|
| 查看次数: |
1484 次 |
| 最近记录: |