我的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。
答案 0 :(得分:2)
您可以使用变量作为配置并在运行时传递它们。我们使用调用子包(具有变量)的父包来执行此操作,但我相信可以通过这种方式直接在调用包(您可以动态创建)中发送它们。
您可以将变量存储在配置表中,让用户通过t-sql更新配置表,然后再调用该包。这只适用于每个用户都有不同的父包,或者用户无法同时运行以避免竞争条件的情况。