[英]How to update variable value in Data Flow ssis?
我是 SSIS 的新手,有以下問題/問題。
可以使用 SQL 在數據流中更新變量嗎? 例如,我需要分配數據庫中可用的最大 ID 的數值(並且當 etl 運行時最大值會發生變化)。 所以我需要在插入的每一行中更新變量。
這可能嗎? 還是有其他方式?
我試過使用變量,但它的值在數據流中沒有變化。 我在數據流中也得到了一些與 OLE DB 命令腳本相關的答案,但我無法理解。
您必須分兩步執行此操作:
首先,您必須使用執行 SQL 任務將 SQL 表中的最大 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.