Vb.net 如何设置项目参数?
在我尝试执行的SSIDB节点中的包中,我有一个包参数和一个项目参数 我可以通过向execute方法提供ExecutionValueParameterSet来设置包参数。是这样的:Vb.net 如何设置项目参数?,vb.net,ssis,Vb.net,Ssis,在我尝试执行的SSIDB节点中的包中,我有一个包参数和一个项目参数 我可以通过向execute方法提供ExecutionValueParameterSet来设置包参数。是这样的: Dim setValueParameters As New ObjectModel.Collection(Of PackageInfo.ExecutionValueParameterSet) Dim exp As New PackageInfo.ExecutionValueParameterSet exp.Object
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
parameter,则该参数为false
有什么想法吗?感谢@billinkc,我发现我应该在相同的ExecutionValueParameterSet上设置项目参数,但使用exp.ObjectType=20作为项目参数。问题在于ObjectType。分配给他们的魔法数字有意义
- 20项目参数
- 30包参数
- 50执行参数
SELECT * FROM SSISDB.catalog.object_parameters AS OP
另见
另请参见此SSIS WIKI页面,了解有关参数的信息:
在为项目参数引用
ObjectType
时,是否仍使用值30?它应该是20Ahh,您是对的,项目参数的值应该是20,我不应该这样设置值:package.Parent.parameters(sp.Name).set(ParameterInfo.ParameterValueType.Literal,sp.value)谢谢!