我们最近开发了一个应用程序,它将在 DB2 中运行查询并向相应的收件人发送邮件。它在我们的本地系统和 QA 区域运行良好。但在生产中,很少有查询失败(即使这种情况很少见,比如一周一次)。它抛出以下异常。
异常内部细节:
ERROR [40003] [IBM][CLI Driver] SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS". Location where the error was detected: "111.111.111.111". Communication function detecting the error: "recv". Protocol specific error code(s): "10004", "", "". SQLSTATE=08001
由于错误只发生在生产中,并不经常发生,我们不确定是代码问题还是设置问题。你有什么想法吗?
最佳答案
我们最近与我们的 IBM 代表讨论了这个问题。在查看了他们的内部知识库之后,他建议我们根据对遇到相同问题的其他客户的建议,将“Interrupt=0”添加到我们的连接字符串中。
在 v10.5 FP2 之前,Interrupt 的默认值是 1,并且对于大多数连接来说仍然是这样。他们将 FP2 中连接到 z/OS(大型机)的默认值更改为 2。
我们正在使用 C#,可以找到 IBM Data Server Driver for .Net 的连接字符串属性 here .我确信他们的其他语言的驱动程序也有类似的属性。
This page IBM 文档中的内容更详细地介绍了该设置。
自从我们最近添加该属性以来,我们还没有发现这个问题,但它总是断断续续的,所以我还不能自信地说这个问题已经解决了。时间会证明...
关于database - DB2 通信错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36355694/