起因:
服务器运行的sqlserver2012R2版本,运行已经一年多时间了。期间没人动服务器配置和设置,突然有一天在笔记本上面调试时,服务器数据连不上了。自此以后,除了在服务器和服务器的局域网上能连上之外,其他的均连不了。在配合服务器调试时,极为不方便。
起初,也不影响服务器使用,就没管。最近要做数据处理,本地开发连不上,本着没啥是程序员解决不了的精神就开始分析此事件。
期间也去阿里云网络安全组查看了,是否是端口过滤了。服务器上面的防火墙开启了,没有配置出入站规则。等等都检查了一遍。
客户端工具尝试连接服务器,均提示08001错误信息,握手期间发生异常,提供的IP和地址不可用,或服务器连接数少,资源不够用等等。
反正这个提示也没啥用,查了百度,有几个帖子有点意思,没解决我的问题,给其他看帖的人看看,看能否解决你的问题:
https://bbs.csdn.net/topics/392039622?list=lz
https://bbs.csdn.net/topics/392039622?list=lz
看帖子基本上没解决我的问题,都是大致差不多的,但是给我的提示,让我换思路去思考。
分析了下window的事件管理器,提示信息,没有任何反应,说明这个链接,还没到sqlserver服务捕获。
想着打开SQL配置管理工具
找到MSSQLSERVER这个网络配置,看是否启动没,很显然是启动的,因为我服务器上面的Navicat能够链接成功。
果不其然,是正常,因为我服务器上面的项目也都是正常运行的。
然后看了看,里面的端口有没有变化,右键,tcp/p --- 属性,查看信息,会发现里面有很多网络监听和端口相关的信息。
然后把下面的已启用,都改为是,保存,重启Mssqlserver服务,必须重启服务。来看看,服务器上是否能连接,测试服务器上正常。再看看,客户端,我笔记本上能否连接,依然提示连接不了。所以我就在我笔记本上,telnet 服务器IP地址 端口,看我笔记本上是否能ping通,
答案是能ping通,但是Navicat就是连不上。至此有点无奈了。想着是不是sqlserver服务有问题,还是怎么滴,就打开安装程序,进行修复。
修复了一遍,所有都正常和成功,说明sqlserver数据库引擎正常,没有任何问题。再次无奈,又想着,重装一次sqlserver吧,觉得麻烦,还要迁移数据库等,没必要。反正也不影响服务器上程序使用。
为了验证是不是服务器SQL有问题,所以我决定了再装一个版本的sqlserver,所以这就是你们看到我上面的网络配置那里有两个sqlserver配置的原因
这里得吐槽下sqlserver在安装的过程中,没提修改端口的界面功能,反正我没找到,还特意看了一遍。
新装好的sqlserver2014启动后,如果直接通过IP去访问,默认端口1433,会访问到上面的sql2012。
所以我就找到下面的SqlExpress,把tcp/ip里面的端口,调了一遍,改为1234.
然后在服务器上面,用ip,1234的方式,访问sqlserver2014的SQLExpress实例,访问成功,说明修改端口生效了。
然后再客户机我的笔记本上面,用 公网IP,1234\Sqlexpress 访问服务器上的sql2014,结果出乎意料的访问成功了。
说明问题还是发生在服务器端口配置和端口监听那里。然后,抱着尝试的心态把sqlserver2012的tcp/ip的端口也修改了。
(操作过程中千万注意备份数据!操作过程中千万注意备份数据!操作过程中千万注意备份数据!)
然后重启sqlserver服务,先看服务器*问成功了,再来尝试客户机笔记本*问服务器,结果惊喜的发现也成功了。
OMG,着实,太刺激了,总算解决了。
这个界面,就是给你最好的证明。