【问题标题】:Teradata Database 3130 Response limit exceeded?Teradata Database 3130 超出响应限制?
【发布时间】:2016-01-19 18:02:05
【问题描述】:

[Teradata Database] [3130] Response limit exceeded

我不知道是什么导致了这个随机错误消息。当我为 SELECT 调用数据库或执行存储过程时,就会发生这种情况。我希望我有更多关于如何重现这个的信息,但它似乎是断断续续的。

这个错误实际上是什么意思?什么类型的条件会导致这种情况?

编辑:我发现当我构建我的 ASP.NET 应用程序 (vs2012) 时问题就消失了。就像与连接相关的东西被缓存在我机器上的某个地方。在我通过重建回收应用程序池后,它会重置所有内容。下次发生这种情况时,我将尝试保存 web.config 文件,该文件会自动回收应用程序池而不重建 DLL。

【问题讨论】:

    标签: teradata


    【解决方案1】:

    这是消息手册的剪切和粘贴:

    3130 超出响应限制。

    解释:TDBMS 限制为 16 个未完成的响应 单次会议。如果应用程序允许响应堆积, 会出现这个错误。响应是来自 SELECT 的响应集 陈述。 TDBMS 会保留一个响应,直到我们知道用户是 完成后它被取消。有两种情况:

    1. 如果 KeepResp 为 OFF,则当所有行都返回到应用程序并且主机已被取消时,响应会自动取消 通知响应结束。

    2. 如果 KeepResp 为 ON,则在用户明确取消之前保持响应。在每种情况下,响应都可以通过以下方式显式取消 应用程序。一旦不再需要它。

    生成者:调度员。

    为谁:最终用户。

    补救措施:响应是会话的属性,将 如果会话注销,则自动自动取消。 取消旧响应并重新提交请求或事务。

    正如您已经注意到的,这通常是由行为不端的应用程序、服务器端打开的结果集过多引起的。关闭它们是客户的责任:-)

    【讨论】:

    • 我一直在试图解决这个问题,但它并没有在我身上跳出来。是连接泄漏吗?我在我的应用程序中找不到没有关闭所有连接的任何地方。如何打开太多回复?我对所有 TdConnection、TdCommand、TdDataReader 对象使用 Using 块。这些对象的处置不会释放任何响应吗?编辑:在我弄乱 KeepRes 之前,我想知道为什么会发生这种情况,因为我以前从未设置过该属性。
    • "你怎么打开太多回复?"通过不关闭前一个 :-) 我不是 .Net 开发人员,但关闭 TdDataReader 也应该关闭结果集。 KeepResp 是一个 CLI 选项,我不知道它是否存在或如何在 .NET 中调用。
    • 两年后标记为答案。实际上,即使在检索到最后一行之后也需要关闭阅读器。
    【解决方案2】:

    在我的情况下,当我尝试在同一个连接实例上创建超过 15 个语句/准备语句然后在它们上执行查询时出现错误。

    因此,您应该检查是否有超过 15 个语句没有在同一个连接上创建,或者它们必须在创建另一个之前关闭。

    如果我们谈论超过 313 响应限制,则结果集通常不在图片中,因为 Statement 会自动关闭现有结果集以防它被重用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      相关资源
      最近更新 更多