如何更新数据流 ssis 中的变量值?

How to update variable value in Data Flow ssis?

我是 SSIS 新手,有以下 question/problem.

可以使用 SQL 在数据流中更新变量吗?例如,我需要分配数据库中可用的最大 ID 的数值(当 etl 为 运行 时,最大值会发生变化)。所以我需要用插入的每一行更新变量。

这可能吗?或者其他方式?

我试过使用变量,但它的值在数据流中没有改变。我在数据流中也得到了一些与 OLE DB 命令脚本相关的答案,但我无法理解它。

您必须分两步完成:

1 - 从 SQL 中读取最大 ID 并将其存储到变量中

首先,您必须使用执行 SQL 任务将最大 ID 从 SQL Table 读取到变量中。您可以参考以下文章获取分步指南:

2 - 使用脚本组件增加每一行的 ID

在变量中存储最大 ID 后(示例:@[User::MaxID]),您必须在数据流任务中使用脚本组件来为每一行增加它。

在数据流任务中添加脚本组件转换,select User::MaxID 作为 ReadOnly 变量,添加输出列 (NewID) 并使用类似的脚本(VB.NET 中的示例)

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

<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _  
<CLSCompliant(False)> _  
Public Class ScriptMain  
    Inherits UserComponent 

    Private CurrentID as Integer  = 0

    Public Overrides Sub PreExecute()

        Base.PreExecute()

        CurrentID = Dts.Variables.Item("User::MaxID").Value

    End Sub

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)  

        CurrentID += 1

        Row.NewID = CurrentID


    End Sub 

End Class

类似帖子