【问题标题】:Replace Script Task In Multiple SSIS Packages替换多个 SSIS 包中的脚本任务
【发布时间】:2019-05-23 04:55:05
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: c# dll ssis script-task ssis-2017


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我建议创建一个自定义任务。
      它将是包之外的一个单独的 dll 库。您必须一次更新所有包以使用自定义任务而不是脚本任务,但所有未来的更改都会简单得多 - 您只需更新外部 dll,所有 SSIS 包都将开始使用新的。
      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)  
      

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

      【讨论】:

      • 我认为控制台应用程序会是一种更好、更简单的方法!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多