如何解决连接SQL Server时出现的Error 26服务器/实例定位错误?
SQL Server 错误26(定位指定服务器/实例失败)实操排查清单
核心前提:错误26的本质不是“端口连不上”,是客户端根本没找到你写的那个SQL实例在网络上的位置——哪怕你防火墙开的再严,只要前面的配置没对,照样报这个错。80%的报错场景和防火墙根本没关系。
1. 先核对连接字符串(最高发的踩坑点)
很多人折腾半小时配置,最后发现是连接字符串写的不对:
- 连接命名实例时,必须严格按
机器名\实例名的格式写,比如装在叫WORK-PC的机器上的SQLEXPRESS实例,连接串就写WORK-PC\SQLEXPRESS,别一上来就用IP拼实例名——IP场景下不支持实例名自动解析,拼出来直接触发错误26。 - 绝对不要写混杂格式的连接串,比如
192.168.1.100\SQLEXPRESS,1433,这种写法完全不符合SQL连接规范,是错误26的重灾区。 - 如果你非要用IP连接,就别带实例名,直接写
IP地址,实例监听的固定端口,比如192.168.1.100,1455。
2. 把两个核心服务跑起来(配防火墙之前必做)
很多人防火墙规则堆了一堆,结果关键服务没启动,全是无效配置:
- 首先必须启动
SQL Server Browser服务:这个服务的作用就是把你写的机器名\实例名映射到实际的监听端口,没开的话不管网络怎么通,都定位不到实例位置。操作:按Win+R输services.msc打开服务面板,找到SQL Server Browser,把启动类型改成“自动”,手动触发启动。 - 确认你要连的那个SQL实例对应的服务是运行状态:比如默认实例对应
SQL Server (MSSQLSERVER)服务,命名实例对应SQL Server (你的实例名)服务,别是停掉的状态。
3. 检查SQL自身的网络配置(和防火墙无关)
打开SQL Server Configuration Manager,改完一定要重启实例服务才生效:
- 找到对应实例的“服务器协议”,把TCP/IP协议启用——很多人装完SQL默认只开共享内存/命名管道,跨机器连接时根本识别不到实例,直接报26错误。
- 双击打开TCP/IP属性,切到“IP地址”标签页,拉到最下面的
IPAll配置项:把TCP动态端口清空,手动给实例设一个固定监听端口(比如1433),不要用动态端口——动态端口每次重启SQL都会变,会直接打破Browser服务的固定解析逻辑,触发错误26。
4. 正确配置防火墙规则(之前配了不生效,大概率规则不全)
- 单开1433端口是不够的,必须额外加UDP 1434端口的入站规则——这个端口是SQL Browser服务的专用通信端口,没开的话照样解析不到实例。
- 比单加端口规则更靠谱的方式是,直接给两个可执行程序加入站允许规则,不会因为改端口就失效:
- 程序1:对应实例的
sqlservr.exe,一般在SQL安装目录的Binn文件夹下 - 程序2:
sqlbrowser.exe,一般在系统盘的Program Files (x86)\Microsoft SQL Server\Shared文件夹下
- 程序1:对应实例的
- 验证技巧:直接临时把防火墙全关了测连接,如果关了还是报26,立刻回到前面3步排查,别在防火墙上浪费时间。
快速验证的排查顺序
- 先在客户端机器上cmd输
ping 你的服务器机器名,如果解析不到正确IP,直接在本地hosts文件加一行服务器IP 服务器机器名的映射再测。 - 别先拿自己写的应用程序测,先用SSMS用完全一样的连接参数连一遍,如果SSMS都连不上,就是数据库侧的配置问题,别找应用代码的锅。
内容的提问来源于stack exchange,提问作者norbertb
相关产品推荐
相关产品推荐

