Redshift ODBC 错误
Posted
技术标签:
【中文标题】Redshift ODBC 错误【英文标题】:Redshift ODBC Errors 【发布时间】:2016-08-25 08:40:29 【问题描述】:我正在使用 Redshift ODBC 32 位驱动程序通过 SSIS 2015 ODBC 连接在 SQL-2016 中提取数据。我有大量数据要从 Redshift 加载。我在 21 分钟内加载了大约 10000000 条记录。
但是,我的历史表有 260636061 条记录。如果我运行包来加载所有数据,那么它会运行一段时间并抛出以下错误 -
[ODBC 源 [2]] 错误:出现打开数据库连接 (ODBC) 错误。状态:'HY000'。本机错误代码:30。[Amazon][RedShift ODBC] (30) 尝试执行查询时发生错误:服务器意外关闭连接。这可能意味着服务器在处理请求之前或处理请求时异常终止。
[ODBC 源 [2]] 错误:出现打开数据库连接 (ODBC) 错误。状态:'HY001'。本机错误代码:10010。[Amazon][ODBC] (10010) 内存分配错误:捕获到 std::bad_alloc 异常。
[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。 ODBC 源上的 PrimeOutput 方法返回错误代码 0x80004005。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但是错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
知道如何解决这个问题吗?或者我们不应该一次从 SSIS 中提取这么多数据吗?
谢谢
【问题讨论】:
【参考方案1】:驱动程序可能会尝试一次将所有结果行加载到内存中,而理想情况下它会分批发送行,从而允许 SSIS 一次处理一批。
尝试按照http://docs.aws.amazon.com/redshift/latest/mgmt/configure-odbc-options.html 调整 ODBC 驱动程序上的选项,看看有什么用。
您的驱动程序是否在您的服务器上设置为 DSN,或者是否有可以直接与其通信的 SSIS 源?如果它是 DSN,您将看到如下所示的“其他选项”面板,您可以使用该面板:
如果它是 SSIS 源,则这些选项可能会在 SSIS 的连接管理器上可用。
【讨论】:
从 postgres 数据库加载时,SSIS 出现同样的错误,这也为我解决了。以上是关于Redshift ODBC 错误的主要内容,如果未能解决你的问题,请参考以下文章
Azure C# 应用服务 ODBC 连接到 Redshift
到 Amazon Redshift 的 ODBC 连接字符串