加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server-2005 – SSIS脚本组件写入变量

发布时间:2020-12-12 07:00:33 所属栏目:MsSql教程 来源:网络整理
导读:这是SQL 2005. 我在数据流任务中有一个脚本组件.我想从输入列中读取并将数据写入全局用户变量. 我已经设置了输入列,并将我的全局用户变量作为ReadWriteVariable添加到脚本组件属性中. 这是我的代码,我只是想在这里改变全局用户变量的值,但它不起作用.当我在另
这是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"

解决方法

我想到了.

来自MS:

In Script component code,you use
typed accessor properties to access
certain package features such as
variables and connection managers.

The PreExecute method can access only
read-only variables. The PostExecute
method can access both read-only and
read/write variables.

For more information about these
methods,see Coding and Debugging the
Script Component.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读