我有一个SQL查询,它有时会失败。这意味着该查询在大多数情况下运行良好。一旦查询失败,如果我再次执行是与一些延迟,它是成功的在相同的执行。
请注意,查询中使用的表在成功方案和失败方案之间没有任何更改。它们完全一样。如下所述,查询连接了两个表,查询结果应该是空的。但有时ADO会抛出错误。
如何找出问题的根本原因?
我故意遗漏了一些细节,因为我对了解SQL查询失败的一般问题解决方法很感兴趣。
以下是一些细节,以了解任何具体的替代方法以及。
更新:
对于这个特定的问题,我认为客户端耗尽了可用的TCP端口。根据默认设置,5000端口是TCP端口的最大数目。在我的示例中,ADO创建隐式连接,在每次查询时创建TCP端口。
netstat
告诉我,当我运行工作流时,打开的端口数量急剧增加。在大约4000个端口上,查询失败(0-1023是保留端口)。来自这里的Jibcov的回答为我指明了正确的方向。
发布于 2010-09-17 13:16:58
SQL查询失败的“通用问题解决方法”与任何其他代码故障相同:
编辑:下面提供了更具体的信息,下面是微软知识库的文章:http://support.microsoft.com/kb/328306讨论了可能的原因和解决这个问题的方法。
发布于 2010-09-17 05:48:39
阅读错误信息!
由于以下几个原因,查询只会“失败”:
不正确或矛盾的聚合或语法将在解析时得到。但是..。
这可能是缓慢或提供错误的数据,但这并不是“失败”本身。
编辑:
这不是查询错误:它是与任何SQL命令无关的连接错误。
通常,您现在需要确定它是与一个客户端相关还是一个普遍的问题
发布于 2012-01-24 01:29:33
‘潜在原因’KB文章省略了为我解决这个问题的那篇文章--“在应用程序处于高度紧张的情况下,您不能通过使用用于Server的OLE DB提供程序访问Server数据库”http://support.microsoft.com/kb/907264。
在这种情况下-进程运行一段时间,检索数据确定,然后失败与错误。
运行'netstat -an‘将显示进程运行时打开的所有ips/端口。对我来说,这些都在20岁左右,直到达到某个代码块.然后迅速上升到4000+,应用程序就失败了
https://stackoverflow.com/questions/3732868
复制相似问题