Ответ 1
Вы можете использовать компонент потока данных Script для переноса значения столбца потока данных в переменную SSIS. Тем не менее, вы должны следовать определенным правилам при работе с компонентом потока данных Script и переменными SSIS.
SSIS не позволяет присваивать значения переменным SSIS в процедуре Script, которая обрабатывает строки. Но есть процедуры до и после выполнения, где вы можете обрабатывать задание.
В вашем компоненте Script добавьте переменную SSIS в свойство ReadWriteVariables. Измените Script и объявите переменную в классе ScriptMain. Используйте процедуру PreExecute для инициализации переменной. Используйте процедуру ProcessInputRow, чтобы назначить значение столбца ввода-буфера для переменной Script. И используйте задачу PostExecute для назначения значения из переменной Script переменной SSIS.
Здесь приведен пример компонента VB Script. Он имеет переменную SSIS (MyOutVariable), которая получит результат переменной Script (MyVar). Переменная 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