自定义脚本任务需要替换为许多SSIS软件包。 我们可以手动完成,但是有170个软件包需要自动化。 代码有效,所以没有问题。 手动替换后,脚本任务不会显示任何错误。
您好,我在SSIS中大约有170个软件包。我需要在每个软件包中替换一个任务脚本。在每个软件包中,任务的名称都是相同的。
我们如何动态地替换每个程序包中的代码或任务,而不必进入每个任务就将新任务或任务放入新任务,取出旧任务并用旧任务名称重命名新任务。
还是更好,只需将旧的替换为旧的?该脚本实际上是一个DDL。
谢谢。 P
答案 0 :(得分:1)
没有正式的方法,因为Visual Studio不支持一次更改多个程序包。
您可以通过使用文本编辑器查找并替换所需的代码段来解决此问题(因为dtsx包是Xml文件)
答案 1 :(得分:0)
我建议创建一个自定义任务。
它将是软件包外部的一个单独的dll库。您将必须一次更新所有软件包以使用自定义任务而不是脚本任务,但是所有将来的更改将变得更加简单-您将仅更新外部dll,并且所有SSIS软件包将开始使用新的dll。 >
Developing a Custom Task
其他受支持的选项是使用“ Microsoft.SqlServer.Dts”库通过SSIS API修改程序包。您的代码将如下所示:
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Tasks.FileSystemTask
Imports Microsoft.SqlServer.Dts.Tasks.BulkInsertTask
Module Module1
Sub Main()
Dim p As Package = New Package()
' Add a File System task to the package.
Dim exec1 As Executable = p.Executables.Add("STOCK:FileSystemTask")
Dim thFileSystemTask1 As TaskHost = CType(exec1, TaskHost)
' Add a Bulk Insert task to the package.
Dim exec2 As Executable = p.Executables.Add("STOCK:BulkInsertTask")
Dim thFileSystemTask2 As TaskHost = CType(exec2, TaskHost)