如果无法定位问题所在,当我们向别人求助时,我们甚至不知道该如何提问。
因为合作商的关系,我们有一台服务器是Windows系统的,运行SQL Server,而团队的所有成员都并不熟悉这套东西。重启了服务器,然后注意到一个问题,数据库连接时好时坏。
我用的是nodejs的mssql模块,非常可恨的是,没有连接成功,也没有报任何错,反正就是什么都没有发生就结束了。
搞这些不熟悉的东西,真是一件让人头疼的事情,但我相信所有的莫名其妙,都必然存在一个被我们忽视的原因。
远端Windows服务器上
这说明服务是出于正常监听状态,而且我使用服务器上的SSMS(SQL Server Management Studio)是可以成功连接的。
本地linux机器上
这说明端口确实处于正常监听状态。
问题定位
我猜想可能是连接用尽,想查看一下当前连接数,可问题是,连接真的用尽了,我甚至没办法新开一个窗口执行sql语句。我查看了数据库服务器的日志,希望找到一些线索。习惯了linux的操作习惯,打算直接找日志文件,后来才发现windows的日志可以直接通过图形界面查看。发现如下内容:
感觉很明确了,应该就是数据库允许连接数太小,很容易被占满,所以连接时好时坏。定位了问题,解决方案就呼之欲出了,思路是:增大数据库允许的用户连接数
。
找了很多方案,但都不成功,而且因为对SQL Server数据库不熟悉,所以操作上也很不方便,直到找到这篇救命文档,按照上面所说的操作,结合另一篇,修改了允许用户的最大连接数为100,问题成功解决。
解决方案
然后重启SQL Server,配置就生效了。
- 查看数据库允许设置的最大连接数,总是返回32767,也就是用户连接数最大可设置为32767
参考链接