2014-01-09 88 views
0

是否可以讀取SSIS腳本組件源中的對象變量值?讀取SSIS腳本組件源中的對象變量值源

我有一個Object類型的變量,它包含使用SQL腳本任務填充的表中的記錄。

我已經使用這個腳本任務和它的通過這種方式,其中vTableRowsObj是對象變量,使用下面的代碼

oleDA.Fill(dt, Dts.Variables("vTableRowsObj").Value) 

可以正常使用。

我想在SSIS腳本組件中讀取此對象,以便我可以直接將腳本組件的輸出提供給目標表。

最終目標是我打算創建更多的對象變量,只需讀取這些對象,並將輸出從腳本組件輸出到目標表。

回答

1

鑑於您有一個由SQL腳本任務填充記錄的表,爲什麼需要將該數據加載到Object類型的變量中?爲什麼不將該表用作數據流中的數據源?基本步驟...

1)運行您的SQL腳本任務,並加載你的結果表中(聽起來像你已經這樣做了)

2)跳過加載記錄對象變量

3)而不是添加數據流組件的下游連接到您的SQL腳本任務

4)源組件添加到您的數據流:使用你的SQL腳本任務填充作爲數據源

5)A dd a目標組件到您的數據流:使用您的目標表作爲您的數據目標

然而,本着回答您直接詢問的問題(如果我實際上已經正確理解您的問題)的精神,那麼簡單的答案是肯定的您可以使用SSIS腳本組件作爲數據流中的數據源。 This article walks you through the steps

+0

要回答你的問題,一個可能需要使用一個對象變量,而不是一個數據流,因爲人們可能會執行動態查詢,不知道,在設計時,查詢會產生哪些列。 –

+0

因爲我可能想要發送電子郵件,並且在電子郵件中我想列出我的變量中的項目。 –

2

我有一個類似的問題。
下面是一些指向參考的鏈接,我的代碼如下,簡單輸出ID和名稱。

http://agilebi.com/jwelch/2007/03/22/writing-a-resultset-to-a-flat-file/
http://www.ssistalk.com/2007/04/04/ssis-using-a-script-component-as-a-source/
http://consultingblogs.emc.com/jamiethomson/archive/2006/01/04/SSIS_3A00_-Recordsets-instead-of-raw-files.aspx

using System; 
using System.Data; 
using Microsoft.SqlServer.Dts.Pipeline.Wrapper; 
using Microsoft.SqlServer.Dts.Runtime.Wrapper; 
using System.Xml; 
using System.Data.OleDb; 

public override void CreateNewOutputRows() 
{ 
    DataTable dt = new DataTable(); 
    OleDbDataAdapter oleda = new OleDbDataAdapter(); 
    oleda.Fill(dt, this.Variables.ObjectVariable); 

    foreach (DataRow row in dt.Rows) 
    { 
     Output0Buffer.AddRow(); 
     Output0Buffer.ID = Convert.ToInt32(row.ItemArray[0]); 
     Output0Buffer.Name = row.ItemArray[1].ToString(); 
    } 

} 
+0

我有點困惑這個.Variables.ObjectVariable,請你解釋一下嗎? – Diomedes

+0

Variables.vTableRowsObj在你的情況 – tbone

相關問題