データフロースクリプトコンポーネントを使用して、データフロー列の値をSSIS変数に転送できます。ただし、データフロースクリプトコンポーネントとSSIS変数を操作するときは、特定のルールに従う必要があります。
SSISでは、行を処理するスクリプトプロシージャでSSIS変数に値を割り当てることはできません。ただし、割り当てを処理できる実行前と実行後の手順があります。
スクリプトコンポーネントで、SSIS変数をReadWriteVariablesプロパティに追加します。スクリプトを編集し、ScriptMainクラスで変数を宣言します。 PreExecuteプロシージャを使用して、変数を初期化します。 ProcessInputRowプロシージャを使用して、input-buffer列の値をスクリプト変数に割り当てます。そして、PostExecuteタスクを使用して、スクリプト変数からSSIS変数に値を割り当てます。
VBスクリプトコンポーネントの例を次に示します。スクリプト変数(MyVar)の出力を取得するSSIS変数(MyOutVariable)があります。 MyVar変数は、データフローのMyNumber列からその値を取得します。
Public Class ScriptMain
Inherits UserComponent
Dim MyVar As Integer
Public Overrides Sub PreExecute()
MyBase.PreExecute()
'initialize variable local to data flow
MyVar = 0
End Sub
Public Overrides Sub PostExecute()
MyBase.PostExecute()
' output variable value to SSIS variable
Me.Variables.MyOutVariable = MyVar
End Sub
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
' logic to get value
MyVar = Row.MyNumber
End Sub
End Class