2013-01-14 38 views
0

我有一個關於SSIS的快速問題。我正在開發一個包,該包執行從Excel源數據流任務到OLE DB連接。數據庫中的列應該允許空值。但是,如果我在Excel電子表格的數字列中輸入了錯誤的數據,則不會導致數據流任務失敗,因爲我希望這樣做。我試圖通過顯式地嘗試轉換派生列步驟中的任何數字列來解決此問題,但是也會發生同樣的情況 - 如果我在進入Excel數值列時輸入abc,如果在程序包運行後在數據庫中只顯示爲NULL。我希望允許NULLS,但是如果數據損壞,我希望程序包失敗。Excel數據源中的錯誤數據在SSIS中不會生成錯誤

任何意見,將不勝感激:)

回答

0

我剛剛試過這個,忽略/重定向/失敗設置似乎沒有任何效果,NULL無論如何都更新到數據庫中。

如果你不想要NULL,我建議你修改你的目的表的定義,在你希望爲數字的列上指定一個NOT NULL約束。這樣數據庫更新和軟件包將失敗。

但是既然你想要空列,我可以建議的唯一的事情就是你寫了一個腳本任務或腳本組件來讀取和驗證數據,然後再接受它。

或者,將Excel文件讀入臨時區域,其中所有列都是VARCHAR,然後通過SQL進行驗證

0

如果編輯在其中定義導入您的SSIS任務,您可以選擇的錯誤處理,每一列。在那裏,你可以選擇將其設置爲失敗而停止,忽略並繼續等

這個鏈接應該幫助你處理一下你的需求:

http://sqlblog.com/blogs/rushabh_mehta/archive/2008/04/24/gracefully-handing-task-error-in-ssis-package.aspx

http://sqlserver360.blogspot.de/2011/03/error-handling-in-ssis.html

http://msdn.microsoft.com/en-us/library/ms141679.aspx