簡體   English   中英

如何更新數據流 ssis 中的變量值?

[英]How to update variable value in Data Flow ssis?

我是 SSIS 的新手,有以下問題/問題。

可以使用 SQL 在數據流中更新變量嗎? 例如,我需要分配數據庫中可用的最大 ID 的數值(並且當 etl 運行時最大值會發生變化)。 所以我需要在插入的每一行中更新變量。

這可能嗎? 還是有其他方式?

我試過使用變量,但它的值在數據流中沒有變化。 我在數據流中也得到了一些與 OLE DB 命令腳本相關的答案,但我無法理解。

您必須分兩步執行此操作:

1 - 從 SQL 讀取 Max ID 並將其存儲到變量中

首先,您必須使用執行 SQL 任務將 SQL 表中的最大 ID 讀取到變量中。 您可以參考以下文章以獲取分步指南:

2 - 使用腳本組件為每一行增加 ID

將 Max ID 存儲在變量中后(例如: @[User::MaxID] ),您必須在數據流任務中使用腳本組件來為每一行增加它。

在數據流任務中添加一個腳本組件轉換,選擇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

類似帖子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM