Web应用无法连接远程SQL Server数据库问题求助
解决SQL Server连接错误代码26的方案
核心问题分析
错误代码26表示客户端无法定位到目标SQL Server实例,常见原因包括实例名称解析失败、网络连通性问题、SQL Server配置未允许远程连接等。
分步排查与解决
验证数据源名称的正确性
检查连接字符串中的Data Source=websqlserver:- 若SQL Server是默认实例,确认服务器的NetBIOS名称/IP地址是否正确,可尝试用服务器IP替换
websqlserver测试,比如改为Data Source=192.168.x.x - 若是命名实例,需加上实例名格式:
Data Source=websqlserver\实例名(比如开发者版默认实例可能是websqlserver\SQLEXPRESS) - 注意:VS的Server Explorer可能用了本地别名或已解析的名称,API所在机器可能无法直接解析该NetBIOS名称,优先用IP地址测试
- 若SQL Server是默认实例,确认服务器的NetBIOS名称/IP地址是否正确,可尝试用服务器IP替换
检查SQL Server的远程连接配置
- 在数据库服务器上打开SQL Server配置管理器
- 展开SQL Server网络配置,找到目标实例的协议,确保TCP/IP协议已启用
- 双击TCP/IP协议,在IP地址标签页中,确认所有启用的IP地址对应的TCP端口(默认1433)已设置,且动态端口无冲突
- 重启SQL Server服务,使配置生效
排查网络连通性
- 在API所在机器上,用
ping websqlserver测试能否连通数据库服务器,若ping不通,检查防火墙规则或网络路由 - 用
telnet websqlserver 1433(或自定义端口)测试端口是否开放,若连接失败,需在数据库服务器的Windows防火墙中添加SQL Server端口的入站规则 - 确保API所在机器和数据库服务器在同一网络,或已打通必要的网络通道
- 在API所在机器上,用
连接字符串细节检查
- 确认
Encrypt=False和Trust Server Certificate=True的配置符合环境(开发者版通常无需强制加密,但如果数据库服务器强制加密,需调整这两个参数) - 检查
User ID和Password是否有拼写错误,注意大小写是否敏感(SQL Server默认不敏感,但部分环境可能配置为敏感)
- 确认
快速测试方法
把连接字符串改为包含IP和端口的格式,比如:
"Data Source=192.168.x.x,1433;Initial Catalog=mydb;Persist Security Info=True;User ID=myuser;Password=mypassword;Encrypt=False;Trust Server Certificate=True"
如果能正常连接,说明是名称解析问题,后续可配置DNS或本地hosts文件解决NetBIOS名称的解析问题。
内容的提问来源于stack exchange,提问作者Merak Marey
相关产品推荐
相关产品推荐

