2011-08-23 44 views
1

我的DBA有幾個SSIS包,他希望爲最終用戶提供一種方法來輸入包中變量的值。創建一個可以接受用戶輸入並將數據傳遞給SSIS包變量的應用程序的最佳解決方案是什麼?創建應用程序以修改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本地安裝這項工作。

回答

2

您可以使用變量作爲配置並在運行時傳遞它們。我們用調用子包(具有變量)的父包執行此操作,但我相信可以通過這種方式將它們直接發送到包(可以動態創建)的包中。

您可以將變量存儲在配置表中,讓用戶通過t-sql更新配置表,然後調用該包。這隻有在每個用戶擁有不同的父包時纔有效,或者用戶無法同時運行以避免競爭狀況。