2016-08-25 88 views
0

我使用Redshift ODBC 32位驅動程序通過SSIS 2015 ODBC連接在SQL-2016中提取數據。我有大量的數據從Redshift加載。我在21分鐘內加載了大約10000000次reocords。Redshift ODBC錯誤

但是,我的歷史表有260636061條記錄。如果我運行軟件包加載所有數據,則運行一段時間並引發以下錯誤 -

[ODBC Source [2]]錯誤:發生開放式數據庫連接(ODBC)錯誤。狀態:'HY000'。本機錯誤代碼:30. [亞馬遜] [RedShift ODBC](30)嘗試執行查詢時發生錯誤:服務器意外關閉了連接。這可能意味着服務器異常終止之前或處理請求時終止。

[ODBC Source [2]]錯誤:發生開放式數據庫連接(ODBC)錯誤。狀態:'HY001'。本機錯誤代碼:10010. [亞馬遜] [ODBC](10010)內存分配錯誤:std :: bad_alloc異常被捕獲。

[SSIS.Pipeline]錯誤:SSIS錯誤代碼DTS_E_PRIMEOUTPUTFAILED。 ODBC源上的PrimeOutput方法返回錯誤代碼0x80004005。當管道引擎調用PrimeOutput()時,組件返回失敗代碼。失敗代碼的含義由組件定義,但錯誤是致命的,並且管道停止執行。在此之前可能會發布錯誤消息,提供有關失敗的更多信息。

任何想法如何解決這個問題?或者我們不應該一次從SSIS獲取這麼多的數據?

感謝

回答

0

這可能是因爲司機正試圖所有結果行加載到內存中一次,而最好將分批發送行,讓SSIS處理它們每次一個批次。

嘗試根據http://docs.aws.amazon.com/redshift/latest/mgmt/configure-odbc-options.html在您的ODBC驅動程序中使用選項,看看有什麼作用。

您的驅動程序是否設置爲服務器上的DSN,或者是否存在可以直接與它通信的SSIS源?如果它是一個DSN,你會看到一個「其他選項」面板像下面,你可以使用: System DSN configuration

如果它是一個SSIS源,選項可能會提供在SSIS連接管理器。