2014-02-24 30 views
0

在我試圖執行的SSISDB節點中的一個包中,我有一個包參數和一個項目參數。如何設置項目參數?

我可以通過將ExecutionValueParameterSet提供給execute方法來設置包參數。它是這樣的:

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參數。

任何想法?

+0

當你引用'ObjectType'的項目參數,你還在使用值30?它應該是20 – billinkc

+0

啊,你是對的,值應該是20的項目參數,我不應該這樣設置值: package.Parent.Parameters(sp.Name).Set(ParameterInfo.ParameterValueType.Literal, sp.Value) 謝謝! – serializer

回答

1

問題在於ObjectType。分配給它們的幻數有意義。

  • 20項目參數
  • 30包參數
  • 50執行參數

您還可以得到什麼可通過查詢集成服務目錄

SELECT * FROM SSISDB.catalog.object_parameters AS OP 

的想法另見

Execute SSIS 2012 Package with Parameters via .Net

0

感謝@billinkc我發現我應該在同一個ExecutionValueParameterSet上設置項目參數,但是對於項目參數使用exp.ObjectType = 20。