当前位置:首页 > 问答 > 正文

SQLServer连接超时错误10060,远程连接被拒绝导致无法访问服务器怎么办

错误10060通常意味着你的电脑(客户端)尝试去连接另一台运行SQL Server的电脑(服务器),但是服务器那边没有回应,或者明确拒绝了你的连接请求,这就像你敲门,但里面的人要么没听见,要么听到了但就是不开门,这个问题几乎总是服务器端的配置或网络问题,而不是你本地电脑的问题,下面我们一步步来排查。

第一步:确认最基本的情况

在开始复杂的设置之前,先确认几件简单的事情。

  1. 服务器开机了吗? 确保那台作为服务器的电脑是正常启动的,没有关机或休眠。
  2. SQL Server服务运行了吗? 即使服务器电脑开着,SQL Server的后台服务也可能没有启动,你需要到服务器电脑上,打开“服务”管理器(可以在开始菜单搜索“services.msc”),找到名为“SQL Server (MSSQLSERVER)”或类似名称的服务(实例名可能不同),确保它的状态是“已启动”。
  3. IP地址和端口写对了吗? 检查你的连接字符串或管理工具(如SSMS)中填写的服务器地址和端口号是否正确,默认的SQL Server端口是1433,但有时会被更改。

第二步:检查SQL Server的网络配置

这是最常见的原因,默认情况下,SQL Server为了安全,只允许本机连接,你需要手动开启远程连接。

  1. 启用远程连接:
    • 在服务器上,打开“SQL Server Management Studio (SSMS)”,用Windows身份验证连接上本地的SQL Server实例。
    • 右键点击服务器实例(最顶层的那个节点),选择“属性”。
    • 在属性窗口中,点击左侧的“连接”页签。
    • 在右侧找到“允许远程连接到此服务器”,确保这个复选框是勾选上的,然后点击“确定”,根据微软官方文档的说明,此设置是允许远程连接的前提。
  2. 启用TCP/IP协议:
    • 在服务器上,找到“SQL Server配置管理器”。(注意:这不是“服务”管理器,是专门的配置工具)。
    • 依次展开“SQL Server网络配置” -> “【你的实例名】的协议”(“MSSQLSERVER的协议”)。
    • 在右边的协议列表中,找到“TCP/IP”,检查其状态是否为“已启用”,如果不是,右键点击它选择“启用”。
    • 非常重要: 完成此更改后,必须回到左侧的“SQL Server服务”,右键点击“SQL Server (你的实例名)”,选择“重新启动”,只有重启服务,新的配置才能生效。

第三步:检查Windows防火墙设置

即使SQL Server配置好了,Windows防火墙也可能会把外部的连接请求拦下来。

  1. 添加入站规则: 在服务器电脑上,打开“Windows Defender 防火墙”(在控制面板或系统设置中)。
    • 点击“高级设置”。
    • 在左侧选择“入站规则”,然后在右侧点击“新建规则...”。
    • 规则类型选择“端口”,然后点击“下一步”。
    • 选择“TCP”,并输入“特定本地端口”为1433(如果你使用的是默认端口),如果你修改过端口,这里就填你修改后的端口号。
    • 点击“下一步”,选择“允许连接”。
    • 再点击“下一步”,为规则应用域、专用、公用网络配置文件,通常可以全选。
    • 最后一步,给这个规则起个名字,SQL Server Port 1433”,然后点击“完成”。
  2. 根据微软支持社区和众多技术博客的普遍建议,除了开放端口,你也可以直接为“sqlservr.exe”这个程序文件创建允许规则,效果类似。

第四步:检查SQL Server的身份验证模式

如果你的连接方式是使用SQL Server账号密码(而不是Windows账号),还需要确保服务器允许这种登录方式。

  1. 在服务器的SSMS中,右键服务器实例,选择“属性”。
  2. 点击“安全性”页签。
  3. 检查“服务器身份验证”是否设置为“SQL Server和Windows身份验证模式”,如果只是“Windows身份验证模式”,那么SQL账号是无法登录的。
  4. 确保你要使用的那个SQL登录账号确实存在,并且有连接权限。

第五步:更复杂的网络问题

如果以上都检查无误,问题可能出在更底层的网络环境。

  1. 路由器或网络设备: 如果客户端和服务器不在同一个局域网内,中间经过了路由器、防火墙等网络设备,你需要确保这些设备上也做了端口转发(Port Forwarding)或安全策略,将对你服务器IP地址1433端口的访问请求正确地转发到内网的服务器上。
  2. 服务器IP地址变化: 确保你连接的服务器IP地址是固定的,如果服务器是通过DHCP动态获取IP,地址可能会变,导致你连不上,最好为服务器设置一个静态IP地址。

一个简单的测试方法:在服务器本机测试

你可以在服务器电脑上,打开“命令提示符”(cmd),输入命令 telnet 127.0.0.1 1433,如果屏幕变成一片漆黑,只有一个光标在闪,说明服务器本机的TCP/IP连接是通的,如果提示“无法打开连接”,则说明SQL Server的TCP/IP协议可能没启用好,或者端口没监听,这个测试能帮你快速判断问题是出在服务器本身还是外部网络。

解决10060错误的思路就是从内到外、从简单到复杂:先确保服务在运行,再开启SQL Server的远程连接和协议,然后处理防火墙,最后排查网络路由问题,大部分情况下,问题都出在前三步。

SQLServer连接超时错误10060,远程连接被拒绝导致无法访问服务器怎么办