第一步:检查最基本、最常见的原因
在深入复杂的配置之前,先确认这些最基础的问题。

检查 SQL Server 服务是否正在运行
这是最常见的原因,如果服务没有运行,任何连接尝试都会失败。
-
操作方法:
- 按
Win + R键,输入services.msc并回车,打开“服务”管理器。 - 在服务列表中找到名为
SQL Server的服务(SQL Server (MSSQLSERVER)或SQL Server (SQLEXPRESS))。 - 检查其“状态”是否为“正在运行”。
- 检查其“启动类型”是否为“自动”,如果不是,建议右键点击 -> 属性 -> 将启动类型改为“自动”,然后点击“启动”按钮。
- 按
-
如果服务启动失败: 查看“服务”管理器中的“服务状态”下方是否有错误代码,双击服务,在“服务”标签页的“服务状态”旁边点击“查看日志...”,可以找到详细的错误信息,这通常会告诉你服务启动失败的具体原因(如端口被占用、配置文件错误等)。
检查 SQL Server 配置管理器中的协议
SQL Server 使用网络协议来监听客户端的连接请求,最常用的协议是 TCP/IP。

- 操作方法:
- 在开始菜单中搜索并打开 SQL Server 配置管理器。
- 在左侧导航栏中,展开“SQL Server 网络配置”。
- 在右侧,找到你正在使用的 SQL Server 实例(
MSSQLSERVER的协议)。 - 确保
TCP/IP协议已启用,右键点击TCP/IP-> 启用。 - 双击
TCP/IP,在“IP 地址”标签页中,确保:- IPAll 下的 TCP 动态端口 为空,TCP 端口 设置为 1433(这是 SQL Server 的默认端口)。
- 对于
IPAll上方的每个 IP 地址(如IP1,IP2,IPAll),确保“已启用”的值为 Yes。
- 重要: 修改协议后,必须重启 SQL Server 服务才能生效(回到第一步重启服务)。
第二步:检查客户端连接和网络设置
如果服务正在运行且协议已启用,问题可能出在客户端如何连接到服务器。
使用正确的服务器名称
连接时使用的“服务器名称”必须能被解析到 SQL Server 所在机器的正确 IP 地址。
-
如何确定正确的服务器名称:
- 本地连接: 可以使用 (点)、
localhost或(local)。 - 远程连接: 必须使用 SQL Server 所在计算机的 计算机名 或 IP 地址。
- 验证计算机名: 在 SQL Server 机器上,右键点击“此电脑” -> 属性,可以找到完整的计算机名。
- 本地连接: 可以使用 (点)、
-
常见问题: 客户端使用的计算机名可能不正确,或者 DNS 无法将该名称解析到正确的 IP。
(图片来源网络,侵删)
检查 Windows 防火墙
Windows 防火墙会阻止外部网络连接到 1433 端口。
-
操作方法:
- 在 SQL Server 机器上,打开“Windows Defender 防火墙”。
- 点击“允许应用或功能通过 Windows Defender 防火墙”。
- 在列表中找到“SQL Server”,并确保其“专用”和“公用”网络复选框都已勾选,如果找不到,可以点击“允许其他应用...”,然后手动添加
sqlservr.exe的路径(通常在C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\目录下)。
-
快速测试: 为了排查,你可以临时禁用防火墙(注意:仅用于测试,测试后务必重新启用!),如果此时可以连接,则证明是防火墙规则的问题。
检查 SQL Server Browser 服务
如果你使用的是命名实例(如 SQL_SERVER_NAME\SQLEXPRESS)而不是默认实例,或者你想通过 SSMS 的下拉列表选择实例,SQL Server Browser 服务是必需的,它会告诉客户端命名实例在哪个动态端口上监听。
- 操作方法:
- 同样在“服务”管理器 (
services.msc) 中找到SQL Server Browser。 - 确保其状态为“正在运行”,启动类型”为“自动”。
- 此服务默认监听 UDP 1434 端口,请确保防火墙也允许此端口的入站流量。
- 同样在“服务”管理器 (
第三步:检查 SQL Server 服务器端配置
如果以上网络层面都正常,问题可能出在 SQL Server 内部的安全配置上。
检查身份验证模式
SQL Server 有两种身份验证模式:Windows 身份验证 和 混合模式。
-
Windows 身份验证: 只能使用 Windows 用户账户登录,如果客户端不在同一个域或工作组,或者 SQL Server 配置为仅限 Windows 身份验证,连接就会失败。
-
混合模式: 可以使用 Windows 身份验证,也可以使用 SQL Server 身份验证(用户名和密码)。
-
操作方法:
- 使用 Windows 身份验证 连接到 SQL Server Management Studio (SSMS)。
- 右键点击服务器 -> 属性。
- 在“安全性”页面,查看“服务器身份验证”。
- 如果你想使用 SQL Server 账号登录,必须选择 “SQL Server 和 Windows 身份验证模式”,然后点击“确定”。
- 修改后需要重启 SQL Server 服务。
检查登录账户和权限
即使启用了混合模式,你使用的 SQL Server 账号也可能被禁用或没有权限。
- 操作方法:
- 以 Windows 身份验证登录 SSMS。
- 展开“安全性” -> “登录名”。
- 找到你尝试登录的账号(如
sa),右键点击 -> 属性。 - 在“常规”页面,确保 “强制实施密码策略” 未被勾选(对于测试环境),“已启用” 被勾选。
- 在“用户映射”页面,确保该账号被授予了访问你想要连接的数据库的权限(至少是
public角色)。
检查 TCP/IP 端口是否被动态分配
TCP/IP 协议的端口被设置为动态,客户端就很难连接。
- 操作方法:
- 打开 SQL Server 配置管理器。
- 找到
TCP/IP协议,右键点击 -> 属性。 - 在 IP 地址 标签页,滚动到最底部的 IPAll。
- 确保 TCP 动态端口 是一个空值,TCP 端口 明确设置为 1433。
- 修改后,重启 SQL Server 服务。
第四步:使用 SQL Server 配置管理器进行客户端测试
这是一个非常强大的诊断工具,可以绕过 SSMS 的一些设置,直接测试底层连接。
- 操作方法:
- 在客户端机器上,打开 SQL Server 配置管理器。
- 在左侧导航栏中,展开“SQL Native Client 配置”或“SQL Server 网络配置”(取决于你的客户端库版本)。
- 在右侧,右键点击 “别名” -> “新建别名(N)...”。
- 别名: 任意输入一个名字,
TestAlias。 服务器: 输入 SQL Server 的计算机名或 IP 地址。 网络库: 选择 TCP/IP。 端口: 输入1433。 - 点击“确定”创建别名。
- 在 SSMS 中,服务器名称就填写你刚刚创建的别名
TestAlias,然后尝试连接。 - 如果使用别名连接成功,说明问题出在客户端的名称解析上(可能是 DNS 问题或hosts文件
