3

许多 SSIS 包中的自定义脚本任务需要替换。我们可以手动完成,但是有 170 个包,需要自动化。代码有效,所以没有问题。手动替换时,脚本任务不会显示错误。

您好,我在 SSIS 中有大约 170 个包。我需要在每个包中替换一个任务脚本。在每个包中,任务的名称都是相同的。

我们如何动态替换每个包中的代码或任务,而不是必须进入每个任务,将新的放入,将旧的取出,然后用旧的任务名称重命名新的。

或者更好的是,只需将旧的替换在一个顶部?该脚本实际上是一个 DDL。

谢谢你。磷

4

2 回答 2

0

没有官方方法可以做到这一点,因为 Visual Studio 不支持一次更改多个包。

您可以通过使用文本编辑器查找并替换所需的代码来解决问题(因为 dtsx 包是 Xml 文件):

于 2019-05-23T08:59:38.823 回答
0

我建议创建一个自定义任务。
它将是包之外的一个单独的 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)  

https://docs.microsoft.com/en-us/sql/integration-services/building-packages-programmatically/adding-tasks-programmatically?view=sql-server-2017

于 2019-05-23T20:54:09.360 回答