2012-10-19 74 views
4

在過去的幾個月中,我已經完成了幾個SSIS包,用於將數據從舊數據庫移動到SQL Server數據庫。根據轉換情況,處理大約5百萬條記錄通常需要10-20分鐘。XML目標列包的性能下降

我遇到的問題之一是我的包的性能很差,因爲我的目標中的一列是SQL Server XML數據類型。

Data comes in like this: 5 
A script creates a Unicode string like this: <XmlData><Value>5</Value></XmlData> 
Destination is simply a column with XML data type 

這實在是太慢了。有什麼建議? 我做了一個SQL跟蹤,並注意到,在SSIS中的每一行執行插入前一個轉換的場景背後:

declare @p as xml 
set @p=convert(xml,N'<XmlData><Value>5</Value></XmlData>') 
+0

您使用哪些版本作爲源和目標? – Gidil

+0

SQL Server 2008 R2 – gmang

+0

我認爲這是目標。什麼是「傳統數據庫」? – Gidil

回答

2

嘗試使用臨時表來存儲所產生的500萬個記錄而不XML轉換,然後使用SQL Server本身將它們從tempdb中移動到最終目的地:

INSERT INTO final_destination (...) 
SELECT cast(N'<XmlData><Value>5</Value></XmlData>' AS XML) AS batch_converted_xml, col1, col2, colX 
FROM #tempTable 

如果5.000.000原來是太多數據單批,您可以在小批量做(100K線應該像一個魅力)。

探查器捕獲的記錄看起來像一個OleDB變換,每行一個命令。

+0

這樣做,謝謝。 – gmang