许多 SSIS 包中的自定义脚本任务需要替换。我们可以手动完成,但是有 170 个包,需要自动化。代码有效,所以没有问题。手动替换时,脚本任务不会显示错误。
您好,我在 SSIS 中有大约 170 个包。我需要在每个包中替换一个任务脚本。在每个包中,任务的名称都是相同的。
我们如何动态替换每个包中的代码或任务,而不是必须进入每个任务,将新的放入,将旧的取出,然后用旧的任务名称重命名新的。
或者更好的是,只需将旧的替换在一个顶部?该脚本实际上是一个 DDL。
谢谢你。磷
许多 SSIS 包中的自定义脚本任务需要替换。我们可以手动完成,但是有 170 个包,需要自动化。代码有效,所以没有问题。手动替换时,脚本任务不会显示错误。
您好,我在 SSIS 中有大约 170 个包。我需要在每个包中替换一个任务脚本。在每个包中,任务的名称都是相同的。
我们如何动态替换每个包中的代码或任务,而不是必须进入每个任务,将新的放入,将旧的取出,然后用旧的任务名称重命名新的。
或者更好的是,只需将旧的替换在一个顶部?该脚本实际上是一个 DDL。
谢谢你。磷
没有官方方法可以做到这一点,因为 Visual Studio 不支持一次更改多个包。
您可以通过使用文本编辑器查找并替换所需的代码来解决问题(因为 dtsx 包是 Xml 文件):
我建议创建一个自定义任务。
它将是包之外的一个单独的 dll 库。您将不得不更新所有包以使用自定义任务而不是脚本任务,但所有未来的更改都会简单得多 - 您只需更新外部 dll,所有 SSIS 包都将开始使用新的。
开发自定义任务
其他支持的选项是使用“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)