2011-11-30 430 views
0

我在SSIS(僅FTR)是相當新的。SSIS包XML源

我必須使用SSIS包將XML數據從DB2數據庫導入到SQL Server中。 XML在CLOB/BLOB中(取決於表),據我所知,這不是由Microsoft DB2驅動程序支持的,所以我創建了一個Java橋接器,它從客戶端獲取ID並返回XML。橋由Visual Basic客戶端訪問(預編譯,並且)作爲SSIS中的腳本任務執行。性能並不是當前的重點(它是7XMLs/sec)。從網橋返回的XML存儲在變量中,並且由於網橋接受一個I​​D /請求,因此請求情況位於Foreach循環容器中,該容器循環處理從SQL任務接收到的ID。

在foreach循環中,有存儲XML的Visual Basic客戶端,從XML導入數據並存儲在FlatFile目標中的數據流,以及另一個Visual Basic任務,該任務在MsgBox中顯示XML )。

數據流也有三個元素:XML源,派生列,平面文件目標。 XML Source從具有修正的XML Schema(XSD)的變量中獲取XML數據,併發送解析​​的數據。 Derived列將ID作爲新列添加到XML數據中,FlatFile Target應將其保存(如前所述,僅用於測試紫袍)。

當我啓動這個包時,一切都很順利。在Java橋中,我看到通信和XML發送回來,數據流也沒有錯誤地返回,但是它會引發一些警告,並且沒有行寫入文件。第二個VB腳本正確顯示XML。

該警告與0x80047076關於來自XML文件的未處理輸出(因爲我只是意圖存儲它的一部分)。

任何想法,爲什麼沒有任何數據寫入文件輸出?

SQL服務器2005 SP1 的Java SE 1.6(U26我認爲) DB2 V 9

警告如下所示:

警告:0x80047076在導入的XML,DTS.Pipeline:輸出「sum」(36)和組件「XML Source」(1)的輸出列「text」(965)隨後不會在數據流任務中使用。刪除這個未使用的輸出列可以提高數據流任務的性能。

我試圖將一個XML文件'hard coded'添加到變量中。我還使用XML Spy檢查了XML與其XSD的對比。 XML是有效的,但沒有數據寫入平面文件。

當我嘗試調試並將該變量添加到手錶中時,我得到的XML稍有修改: 「-s被反斜槓,並且在標準XML標題之後,新行字符也被打印爲標準換行符:\ N實施例:?

< XML版本= \ 「1.0 \」 編碼= \ 「UTF-8 \」 > \ n <擴展屬性> <客戶值>甲< /客戶爲值> ...

但是,當在MsgBox中顯示XML時,XML正常打印(\ n爲換行符,\「),所以我的猜測是,這只是一個未處理的,直接從C/C++/C#字符串表示。

+0

你能寫一個整體警告字句?我知道他們可能非常冗長,但可能會有一些線索。 – cfrag

回答

0

您是否試圖在傳遞到平面文件目標之前將數據可視化?

通過您的描述,聽起來好像數據沒有達到它。

到數據查看器添加到它,按照此鏈接中的步驟:http://msdn.microsoft.com/en-us/library/ms140318.aspx

+0

感謝您的提示,我在網格視圖中對其進行了檢查,並且沒有數據正在通過,因此很明顯,XML Source中會出現一些問題。任何猜測? – Mensfeld

+0

@Mensfeld由於數據流中只有3個元素,因此問題是數據源無法從文件中獲取數據,或者派生列未傳遞元素。你有沒有嘗試在'數據源'和'派生列'任務之間可視化數據?如果這兩者之間存在數據,那麼問題出在派生列任務上。否則,問題出在數據源中。按照我上面寫的 – cfrag

+0

,數據源和派生列之間沒有數據,所以它必須是XML源。 XSD與用於生成XML的XSD相同,並且在運行時報告沒有錯誤。 – Mensfeld