Набор результатов SSIS из потока данных в переменную - PullRequest
11 голосов
/ 13 октября 2010

Прежде чем дать себе сердечный приступ, связанный со стрессом.

Кто-нибудь знает, как выполнить, казалось бы, простую задачу: установить набор результатов одной задачи потока данных (результат будет либо 0, либо 1) и присвоить это значение переменной.

Я создал переменную в порядке.

Результирующий набор получен из файла XML с несколькими элементами.Флаг (0 или 1) является результатом одного из этих элементов, поэтому мне также нужно знать, как получить результирующий набор именно таким флагом.

Если бы кто-нибудь мог помочь, я был бы очень признателен.

Обновление: я в конечном итоге считал результат (0,1) обратно в SQL Server в таблицу флагов.Затем использовал сценарий «Выполнение SQL», чтобы прочитать его обратно из SQL Server и в переменную.Не уверен, что это лучший способ сделать это, но, похоже, он добился цели.

Ответы [ 2 ]

10 голосов
/ 18 октября 2010

Компонент сценария потока данных можно использовать для переноса значения столбца потока данных в переменную служб SSIS.Однако при работе с компонентом сценария потока данных и переменными служб SSIS необходимо соблюдать определенные правила.

Службы SSIS не позволяют назначать значения переменным служб SSIS в процедуре сценария, которая обрабатывает строки.Но есть процедуры до и после выполнения, в которых вы можете обработать присвоение.

В своем компоненте Script добавьте переменную SSIS в свойство ReadWriteVariables.Отредактируйте скрипт и объявите переменную в классе ScriptMain.Используйте процедуру PreExecute для инициализации переменной.Используйте процедуру ProcessInputRow, чтобы назначить значение столбца input -buffer переменной сценария.И используйте задачу PostExecute, чтобы присвоить значение переменной сценария переменной SSIS.

Вот пример компонента сценария VB.Он имеет переменную SSIS (MyOutVariable), которая будет получать выходные данные переменной сценария (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
0 голосов
/ 08 марта 2016

Начиная с SSIS 2012, вы можете легко присвоить переменной значение, используя Выражение для задач .Нет необходимости писать сценарий - который большинство из нас настороженно относится к выполнению, казалось бы, простой задачи установки значения переменной.

Пример: если у меня есть переменная даты с именем Today, и яЕсли я хочу присвоить ему значение, я могу сделать это легко в задаче Выражение , как показано ниже.

enter image description here

Дополнительная литература: MSDN - Документация по задаче выражения SSIS .

ПРИМЕЧАНИЕ: (принятый ответ устарел.)

...