创建应用程序以修改SSIS变量和启动SSIS包的最佳方法

时间:2011-08-23 18:59:07

标签: sql-server vb.net ssis

我的DBA有几个SSIS包,他希望能够为最终用户提供一种输入包中变量值的方法。创建一个可以接受用户输入并将数据传递给SSIS包变量的应用程序的最佳解决方案是什么?

我看过http://blogs.msdn.com/b/michen/archive/2007/03/22/running-ssis-package-programmatically.aspx,我甚至已经非常接近这里提供的一些信息 - http://msdn.microsoft.com/en-us/library/ms403355(v=sql.100).aspx#Y1913

我可以使用此代码在本地完成此工作

    Dim packageName As String
    Dim myPackage As Package
    Dim integrationServices As New Application

    If integrationServices.ExistsOnSqlServer(packageName, ".", String.Empty, String.Empty) Then
        myPackage = integrationServices.LoadFromSqlServer( _
          packageName, "local", String.Empty, String.Empty, Nothing)
    Else
        Throw New ApplicationException( _
          "Invalid package name or location: " & packagePath)
    End If

    myPackage.Variables.Item("Beg_Date").Value = startDate
    myPackage.Variables.Item("End_Date").Value = endDate
    myPackage.Execute()

问题是这需要用户在本地安装SSIS。

1 个答案:

答案 0 :(得分:2)

您可以使用变量作为配置并在运行时传递它们。我们使用调用子包(具有变量)的父包来执行此操作,但我相信可以通过这种方式直接在调用包(您可以动态创建)中发送它们。

您可以将变量存储在配置表中,让用户通过t-sql更新配置表,然后再调用该包。这只适用于每个用户都有不同的父包,或者用户无法同时运行以避免竞争条件的情况。