我有一個簡單的數據流任務,它將1M記錄從源傳輸到目標。源表和目標表都是Oracle表。源處的數據由兩列Id和名稱的,如下所示 -數據流在最後一條錯誤記錄時失敗 - Oracle目的地
create table SrcEmployeeData
(
Id int
,Name varchar(50)
);
在它的值是(1,「測試」),(2,「測試」)等直到百萬。目標表是除「名稱」列不是空列外的源表的鏡像。在源代碼中,我將10個隨機行的名稱列更新爲NULL。爲了捕捉這些錯誤,我創建了4個具有適當錯誤重定向的目的地。
前三個是目標表。首先將每批行數/最大插入提交大小設置爲50,000。第二個具有相同的值設置爲10,000。第三個具有相同的值設置爲1.最終的DFT用於捕獲實際的錯誤記錄。所有三個DFT都將數據訪問模式設置爲「表或視圖 - 快速加載」。
它看起來像這樣 -
由於包開始執行時,錯誤記錄,直到最後一個表中的propation去預期。除了最後一條記錄以外,第一個DFT將有50,000條記錄集作爲批處理失敗。當我查看目標EmployeeData表時,令人驚訝的是我甚至找不到一條記錄。這裏出了什麼問題?
這是兩個錯誤,我得到 -
[OLE_DST - Load Data (50,000 rows) [69]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0xFFFFFFFF.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "OLE_DST - Load Data (50,000 rows)" (69) failed with error code 0xC0202009 while processing input "OLE DB Destination Input" (82). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.
這裏是具有NULL值的隨機行 -
我使用最新的Oracle提供程序的OLE DB和下載最新的針對Oracle的Oracle數據組件 - link。
編輯 - 只是爲了讓這個小更奇怪的。我捕獲錯誤行的最後一個DFT具有所有不正確的數據,如下所示(正在使用SQL Server目標表)。到目前爲止,我已經進行了三次這個測試,並且一直都有同樣的問題。任何幫助?
記住每個批處理提交都是事務。因此,批處理和整個事務中的一個失敗會回滾。 9/10很奇怪。您的目的地表是否有唯一索引?這將允許10個NULLS中的一個留下9個錯誤。看看這個[page](https://sqljgood.wordpress.com/2014/09/29/ssis-troubleshooting-error-1071607685/),這可能有幫助。它討論了你確切的'1071607685'錯誤代碼。 –
感謝@TroyWitthoeft的鏈接。我已將DFT的訪問模式更新爲「OpenRowset」,並且數據正確地被捕獲。 – VKarthik