Компонент сценария SSIS пишет в переменную

Это - с SQL 2005.

У меня есть компонент сценария в Задаче Потока данных. Я хотел бы читать из входных столбцов и записать данные в переменную глобального пользователя.

Я установил свои входные столбцы и добавил мою переменную глобального пользователя как ReadWriteVariable к свойствам компонента сценария.

Вот мой код, я просто пытаюсь изменить значение переменной глобального пользователя здесь, но не работа. Когда я выписываю значение переменной в другой задаче, это все еще имеет свое значение по умолчанию:

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper

Public Class ScriptMain
    Inherits UserComponent
    Dim updateSQL As String

    Public Sub Main()
        Dim vars As IDTSVariables90

        VariableDispenser.LockOneForWrite("SQL_ATTR_Update", vars)
        vars("SQL_ATTR_Update").Value = "Test"
        vars.Unlock()
    End Sub


    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
        'updateSQL = Row.ITMID + Row.PRCCAT
    End Sub

End Class

Я также попробовал без удачи:

Me.ReadWriteVariables("SQL_ATTR_Update").Value = "Test" 
7
задан kennytm 27 August 2010 в 17:46
поделиться

2 ответа

Я разобрался.

Из MS:

В коде компонента сценария вы используете типизированные свойства средства доступа для доступа к определенным функциям пакета, таким как переменные и диспетчеры соединений.

Метод PreExecute может обращаться только к переменным, доступным только для чтения. Метод PostExecute может обращаться как к переменным только для чтения, так и к переменным для чтения / записи.

Для получения дополнительной информации об этих методах см. Кодирование и отладка компонента скрипта .

http://msdn.microsoft.com/en-us/library/ms136031.aspx

Похоже, что Dts доступен только в Script Task.

Вот как выглядит код:

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper

Public Class ScriptMain
    Inherits UserComponent
    Dim updateSQL As String


    Public Overrides Sub PostExecute()
        Me.ReadWriteVariables("SQL_ATTR_Update").Value = "Test"
    End Sub

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
        'updateSQL = Row.ITMID + Row.PRCCAT
    End Sub

End Class
7
ответ дан 6 December 2019 в 21:13
поделиться

Используйте

Dts.Variables("SQL_ATTR_Update").Value = "Test"

И SQL_ATTR_Update должен быть глобальной переменной и должен быть указан в ваших ReadWriteVariables для этой задачи сценария.

1
ответ дан 6 December 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: