在我尝试执行的SSISDB节点中的一个包中,我有一个包参数和一个项目参数。
我可以通过向execute方法提供ExecutionValueParameterSet来设置package参数。它是这样的:
Dim setValueParameters As New ObjectModel.Collection(Of PackageInfo.ExecutionValueParameterSet)
Dim exp As New PackageInfo.ExecutionValueParameterSet
exp.ObjectType = 30
exp.ParameterName = sp.Name
If sp.Value IsNot Nothing Then
Select Case sp.TypeCode
Case TypeCode.String
exp.ParameterValue = sp.Value
Case Else
exp.ParameterValue = Convert.ChangeType(sp.Value, sp.TypeCode)
End Select
End If
setValueParameters.Add(exp)
package.Execute(use32BitRuntime, er, setValueParameters)
现在,这适用于包参数。但是我无法在项目级别设置参数。
我尝试了以下内容:
package.Parent.Parameters(sp.Name).Set(ParameterInfo.ParameterValueType.Literal, sp.Value)
但是,我仍然会遇到参数丢失的错误。如果我在设置后检查package.Parent.Parameters(sp.Name).ValueSet
参数,则为false。
有什么想法吗?
答案 0 :(得分:1)
问题是ObjectType。分配给他们的幻数具有意义。
您还可以通过查询集成服务目录了解可用的内容
SELECT * FROM SSISDB.catalog.object_parameters AS OP
另见
答案 1 :(得分:0)
感谢@billinkc我发现我应该在同一个ExecutionValueParameterSet上设置项目参数,但是对项目参数使用exp.ObjectType = 20。
答案 2 :(得分:0)