SQL Server 2008 R2:一段时间后拒绝连接

时间:2012-11-03 15:51:33

标签: sql-server

首先,我想告诉你,我正在使用的程序已经编译好了,我无法查看源代码。

所以,这是我的问题:

应用程序成功打开了与特定数据库的31个连接。 当它尝试打开第32个连接时,所有连接都开始关闭,包括之前的31个连接。

说实话,我不知道为什么这个应用程序需要打开相同的2-3个表,但是在关闭所有连接之后,应用程序也会关闭。

  

17:41:38 004db680 DRIVER = {SQL   服务器}; SERVER = 192.168.1.8:1433; UID =用户; PWD =密码; DATABASE =数据库

     

17:41:38 004db680 08001 0000000e [Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB]连接无效。 0x00000000 17:41:38 004db680   01000 0000000e [Microsoft] [ODBC SQL Server   驱动程序] [DBNETLIB] ConnectionOpen(ParseConnectParams())。 00000000

这是该应用程序的日志输出。

其他一些信息:

  • 禁用SYN攻击保护的相同问题
  • 数据库最大连接数为30k +

2 个答案:

答案 0 :(得分:1)

在您的数据库上运行此语句,以查看您是否超出了最大连接数:

SELECT @@MAX_CONNECTIONS

答案 1 :(得分:0)

有些事情会浮现在脑海中

  1. 在应用执行之前和期间运行SQL事件探查器。你看到什么输出?也许发生了僵局?

  2. 以前是否有效,最近停止了工作?如果是这样,您是否对SQL应用了Service Pack或其他修复程序?

  3. 如果您的应用是多线程的,并且每个线程都在进行X连接,那么可以尝试将应用限制为在单个内核而不是多个内核上运行。这是一个肮脏的黑客,但它可能会有所帮助。

  4. 如果打开32x命令提示符窗口然后使用osql或sqlcmd实用程序打开32个SQL连接怎么办?听起来很傻,但如果上述情况至少没有结果,你可以看看它是否只是连接的数量,或者是否有其他事情正在发生。那个别的东西可能是

    • 相关数据(见#1);或
    • 驱动程序相关(在应用程序内)。鉴于它使用的是ODBC,也许它已经过时了(您没有说Windows版本,SQL版本等正在运行),您可以尝试更新MDAC(MIcrosoft数据访问组件)吗?