2012-01-03 64 views
2

我有一個SSIS包設置爲將數據從SQL Server 2008 R2表導出到該表的MySQL版本。然而,該包執行,我約1%的行未能被導出。SSIS:SQL 2008 R2到MySQL數據丟失

我的源連接使用SQL語句

SELECT * FROM表1

所有列都是整數。其成功導出一排的一個例子是

2169,2680,3532,NULL,2169

相比的行已失敗

2168,2679,3532,NULL,2168

幾乎沒有什麼不同,我可以確定。

值得注意的是,如果我將源查詢更改爲僅嘗試傳輸單個失敗行 - 即。

SELECT * FROM表1 WHERE ID = 2168

然後記錄被細導出 - 只有當一個選擇它返回失敗多行的一部分。每次導出都會失敗。我將錯誤行重定向到一個文本文件,該文件爲失敗的行顯示-1071610801錯誤。這顯然會轉化爲: -

DTS_E_ADODESTERRORUPDATEROW:「將此行發送到目標數據源時發生錯誤。」

這並沒有真正增加我對這個問題的理解!

我想知道是否有一個鎖定問題或某些東西阻止給定的行被提取或正確插入,但如果任何人有什麼想法或建議什麼可能導致這個甚至更好的如何去解決它,他們會不勝感激。我目前處於全面損失...

+0

目標表中是否有mybe唯一鍵,並且源中存在重複值? – Matej 2012-01-04 22:39:52

+0

另一個想法是使用'For Each'容器,計數器變量和源sql作爲表達式進行批處理?如果您遇到問題,請尋求幫助。 – Matej 2012-01-04 22:43:55

+0

沒有唯一的鍵 - 如果單獨導出,同一行將多次導出,而不是在與select中的其他行一起推出時導出多次。將批量去。 – user1025443 2012-01-05 11:19:00

回答

0

經過很多頭撓和嘗試每一項工作,我可以想出我終於找到了解決方案。

最後,我將用於由devArt -dotConnect for MySql生成的不同驅動程序的MySQL連接器切換出來,並且有一些小例外(我認爲我可以解決),現在所有數據都無錯地導出。

驅動程序是不幸付款的產品,但最終我已經拿出了新的抵押貸款,看到所有這些任務變綠了!

0

嘗試設置更長的超時(1天)的mysql(ADO.NET)目標。

+0

我不害怕 - 嘗試設置高,然後無限的命令超時。事實上,當我嘗試使用另一個導出它時,該行會失敗,但單獨導出時會很好。離奇。 – user1025443 2012-01-04 16:25:32