1.服务器无法连接。
使用ping命令无法ping通服务器,可能的原因有:网络故障、局域网内电脑名重复、IP重复、ARP攻击等都会导致连接失败,先保留最小网络:路由器,服务器和一台工作站,测试网络是否正常,再逐步排查网络。ARP攻击的话,重启路由一般会先恢复正常,然后突然断网。
2.服务器能ping通,但是连接不上。
服务器能ping通说明网络没问题。这个时候先检查数据库服务端口通不通。MSSQL默认的端口是1433,在cmd输入telnet 服务器名(或者IP) 空格 端口号(默认1433),回车
如果是显示这样的画面说明数据库服务端口是通的 ,下面的画面则是端口连接失败
这个时候先检查服务器,MSSQL服务是否启动,如果已启动,在服务器使用telnent命令测试本机SQL服务端口:telnet 127.0.0.1 1433 测试。如果服务器上端口是通的,其他机器端口不通,一般是防火墙的原因。关闭内网防火墙,或者将数据库服务端口添加到例外即可解决。
3.telnet服务器1433端口能通,但是连接不上。
如果服务器1433端口是通的,但是就是连接不上,那就是以下几种原因:
连接使用的用户名或者密码不对,连接时会报错,错误号18456,找管理员要正确的用户和密码连接即可。
连接的用户名被禁用,连接时错误号18470,找管理员解禁即可。
连接的用户名被锁定,一般是服务器设定的安全策略设置了不允许连续输入错误的密码多少次,然后连接时触发了安全策略导致用户被锁定,找管理员解除用户锁定即可
数据库连接池已满,一般是并发太高,或者是有人攻击数据库,大量的尝试登录耗尽连接数导致,在操作系统的事件查看器可以看到大量失败的登录请求。这种情况一般是MSSQL服务器直接暴露在外网,然后导致被攻击。
解决方案:1.调整系统架构 ,数据库服务器不要直接暴露在外网
2.如果数据库必须要使用外网连接,那最好修改数据库端口号。
3.设定复杂的密码策略,不要使用简单密码授权登录
4.建立拥有sa权限的其他用户,然后禁用掉sa
4.还有一些其他的原因导致数据库无法连接的,比如网络包大小设置不当等,但是都基本很少见,就不一一列举了