SQL Server 客户端连接时可能遇到如下报错或者其他各种报错,报错原因可能出现在很多层,本文简单总结一下各层排查及处理方法,按照从内到外的顺序,越靠外层需要联系越多不同岗位的同事一起排查。
一、 开发层
检查ip、端口、实例名、用户名、密码是否正确,先确定都没写错,telnet下端口通不通,如果不通,开始找外援。
连接串格式为 ip,port/instance_name 注意端口前面是个逗号
二、 DB&服务器层
如果是正常在跑的db,个别人连不上,其实基本都是第一步的问题。
如果是新接手的,就需要认真检查一下,因为不规范很可能有各式各样的坑。
1. 本地防火墙是否开启
很常见的一个问题,尤其加域或者重启后注意检查一下防火墙是不是自动打开了。
2. DB是否开启远程连接
默认是打开的,但可能因为某些原因之前的人把它关闭了又没告诉你...
3. 是否允许混合模式登录
如果大家用数据库用户都连不上,dba用操作系统用户能连上,很有可能就是这个问题。修改重启实例生效。
4. 是否启用TCP协议
修改重启实例生效
5. 检查数据库端口设置
检查命令为
--查询端口号
exec sys.sp_readerrorlog 0, 1, 'listening'
也可通过配置管理器查看,修改一般改IPAll部分即可,改完需要重启服务生效
另外如果有多个实例,注意检查不同实例端口是否冲突
6. 检查SQL Server Browser服务是否启用
单实例非必须,多实例时Browser服务会帮助client程序搜索、定位到对应实例。
三、 安全层
内网机器一般是公司防火墙、安全软件策略未开通
云上服务器还有安全组,需要添加白名单
参考
https://www.cnblogs.com/Sprint-Guo/p/9889998.html