我有一個SSIS包從Oracle表中讀取數據,並把它變成一個Netezza公司表。由於某些原因,SSIS無法讀取特定的列值(記錄的2%),如屏幕截圖所示。SSIS未能獲得列值,並將其設置爲NULL
Oracle中的列類型是NUMBER(3)在我的Netezza表是SMALLINT。任何想法爲什麼這可能會發生?
錯誤的列不要麼給我任何信息。
我迄今爲止嘗試:
- 我試着去使用這個MSDN article更好的錯誤描述。從默認的1000
- 減少批量大小,以100
預先感謝任何幫助。
編輯
我讓它失敗,這裏是我得到的錯誤消息。我在我的筆記本電腦上有4 GB內存。這可能是一個問題嗎?發生開放式數據庫連接(ODBC)錯誤:
[DESTINATION_TABLE 2]錯誤。 SQLExecute在插入行時返回錯誤35244
[DESTINATION_TABLE 2]錯誤:發生開放式數據庫連接(ODBC)錯誤。狀態:'HY008'。本地錯誤代碼:51.操作取消
[DESTINATION_TABLE 2]錯誤:開放式數據庫連接(ODBC)發生錯誤。狀態:'01000'。本機錯誤代碼:1.無法寫入nzlog /錯誤文件
[DESTINATION_TABLE 2]錯誤:發生開放式數據庫連接(ODBC)錯誤。狀態:'01000'。本機錯誤代碼:1.無法寫入nzlog /錯誤文件
[DESTINATION_TABLE 2]錯誤:發生開放式數據庫連接(ODBC)錯誤。狀態:'HY000'。本機錯誤代碼:46.錯誤:外部表:錯誤輸入行的數量達到最大錯誤限制
[SSIS.Pipeline]錯誤:SSIS錯誤代碼DTS_E_PROCESSINPUTFAILED。處理輸入「ODBC目標輸入」(13)時,組件「DESTINATION_TABLE」(2)上的ProcessInput方法失敗,錯誤代碼爲0x80004005。標識的組件從ProcessInput方法返回錯誤。該錯誤是特定於組件的,但錯誤是致命的,並且會導致數據流任務停止運行。在此之前可能會發布錯誤消息,提供有關失敗的更多信息。
[SOURCE_TABLE [63]]錯誤:未能將行添加到輸出緩衝區。發生開放式數據庫連接(ODBC)錯誤:
[SOURCE_TABLE [63]]錯誤。
[SSIS.Pipeline]錯誤:SSIS錯誤代碼DTS_E_PRIMEOUTPUTFAILED。SOURCE_TABLE上的PrimeOutput方法返回錯誤代碼0x80004005。當管道引擎調用PrimeOutput()時,組件返回失敗代碼。失敗代碼的含義由組件定義,但錯誤是致命的,並且管道停止執行。在此之前可能會發布錯誤消息,提供有關失敗的更多信息。
您是否嘗試過從oracle提取到平面文件,而不是使用NZ(用於故障排除)。需要弄清楚它是否是導致問題的提取或負載... –
您應該嘗試設置Netezza目標的日誌目錄屬性。您至少可以看到nzlog/nzbad輸出文件,以便從目標位置獲得更多信息。 –
@NWest - 這是一個很好的建議。我這樣做,也必須使用MaxBufferSize屬性,並將提交大小從1000更改爲500.它工作但花了2小時(停機時間),但花了2小時才能加載646 MB的數據。什麼解決了這個奇怪的問題是使用OLEDB驅動程序的Netezza和做Mehtat_90說。 – KalC