4

[Teradata Database] [3130] Response limit exceeded

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

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

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

4

2 回答 2

3

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

3130 超出响应限制。

说明:单个会话的 TDBMS 限制为 16 个未完成的响应。如果应用程序允许响应堆积,则会发生此错误。响应是来自 SELECT 语句的响应集。TDBMS 会保留一个响应,直到我们知道用户完成了它,此时它被取消。有两种情况:

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

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

生成者:调度员。

为谁:最终用户。

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

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

于 2013-09-19T19:59:25.403 回答
0

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

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

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

于 2016-01-19T10:02:05.330 回答