Redshift ODBC错误

时间:2016-08-25 08:40:30

标签: ssis odbc amazon-redshift

我正在使用Redshift ODBC 32位驱动程序通过SSIS 2015 ODBC连接在SQL-2016中提取数据。我有大量的数据要从Redshift加载。我在21分钟内加载了大约10000000个reocords。

但是,我的历史表有260636061条记录。如果我运行package来加载所有数据,那么它会运行一段时间并抛出以下错误 -

[ODBC源[2]]错误:发生了打开数据库连接(ODBC)错误。州:'HY000'。本机错误代码:30。[亚马逊] [RedShift ODBC](30)尝试执行查询时出错:服务器意外关闭了连接。这可能意味着服务器在处理请求之前或处理时异常终止。

[ODBC源[2]]错误:发生了打开数据库连接(ODBC)错误。州:'HY001'。本机错误代码:10010。[Amazon] [ODBC](10010)内存分配错误:捕获了std :: bad_alloc异常。

[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。 ODBC Source上的PrimeOutput方法返回错误代码0x80004005。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

知道如何解决这个问题吗?或者我们不应该立即从SSIS中提取这么多数据?

谢谢

1 个答案:

答案 0 :(得分:1)

驱动程序可能正在尝试一次将所有结果行加载到内存中,而理想情况下它会批量发送行,允许SSIS一次一批地处理它们。

根据http://docs.aws.amazon.com/redshift/latest/mgmt/configure-odbc-options.html尝试使用ODBC驱动程序上的选项,看看哪些有效。

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

如果它是SSIS源,则SSIS中的连接管理器可能会提供这些选项。