Redshift ODBC错误

问题描述:

我使用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获取这么多的数据?

感谢

这可能是因为司机正试图所有结果行加载到内存中一次,而最好将分批发送行,让SSIS处理它们每次一个批次。

尝试根据http://docs.aws.amazon.com/redshift/latest/mgmt/configure-odbc-options.html在您的ODBC驱动程序中使用选项,看看有什么作用。

您的驱动程序是否设置为服务器上的DSN,或者是否存在可以直接与它通信的SSIS源?如果它是一个DSN,你会看到一个“其他选项”面板像下面,你可以使用: System DSN configuration

如果它是一个SSIS源,选项可能会提供在SSIS连接管理器。