凌峰创科服务平台

SQL Server无法连服务器,咋回事?

第一步:检查最基本、最常见的原因

在深入复杂的配置之前,先确认这些最基础的问题。

SQL Server无法连服务器,咋回事?-图1
(图片来源网络,侵删)

检查 SQL Server 服务是否正在运行

这是最常见的原因,如果服务没有运行,任何连接尝试都会失败。

  • 操作方法:

    1. Win + R 键,输入 services.msc 并回车,打开“服务”管理器。
    2. 在服务列表中找到名为 SQL Server 的服务(SQL Server (MSSQLSERVER)SQL Server (SQLEXPRESS))。
    3. 检查其“状态”是否为“正在运行”。
    4. 检查其“启动类型”是否为“自动”,如果不是,建议右键点击 -> 属性 -> 将启动类型改为“自动”,然后点击“启动”按钮。
  • 如果服务启动失败: 查看“服务”管理器中的“服务状态”下方是否有错误代码,双击服务,在“服务”标签页的“服务状态”旁边点击“查看日志...”,可以找到详细的错误信息,这通常会告诉你服务启动失败的具体原因(如端口被占用、配置文件错误等)。

检查 SQL Server 配置管理器中的协议

SQL Server 使用网络协议来监听客户端的连接请求,最常用的协议是 TCP/IP

SQL Server无法连服务器,咋回事?-图2
(图片来源网络,侵删)
  • 操作方法:
    1. 在开始菜单中搜索并打开 SQL Server 配置管理器
    2. 在左侧导航栏中,展开“SQL Server 网络配置”。
    3. 在右侧,找到你正在使用的 SQL Server 实例(MSSQLSERVER 的协议)。
    4. 确保 TCP/IP 协议已启用,右键点击 TCP/IP -> 启用。
    5. 双击 TCP/IP,在“IP 地址”标签页中,确保:
      • IPAll 下的 TCP 动态端口 为空,TCP 端口 设置为 1433(这是 SQL Server 的默认端口)。
      • 对于 IPAll 上方的每个 IP 地址(如 IP1, IP2, IPAll),确保“已启用”的值为 Yes
    6. 重要: 修改协议后,必须重启 SQL Server 服务才能生效(回到第一步重启服务)。

第二步:检查客户端连接和网络设置

如果服务正在运行且协议已启用,问题可能出在客户端如何连接到服务器。

使用正确的服务器名称

连接时使用的“服务器名称”必须能被解析到 SQL Server 所在机器的正确 IP 地址。

  • 如何确定正确的服务器名称:

    • 本地连接: 可以使用 (点)、localhost(local)
    • 远程连接: 必须使用 SQL Server 所在计算机的 计算机名IP 地址
    • 验证计算机名: 在 SQL Server 机器上,右键点击“此电脑” -> 属性,可以找到完整的计算机名。
  • 常见问题: 客户端使用的计算机名可能不正确,或者 DNS 无法将该名称解析到正确的 IP。

    SQL Server无法连服务器,咋回事?-图3
    (图片来源网络,侵删)

检查 Windows 防火墙

Windows 防火墙会阻止外部网络连接到 1433 端口。

  • 操作方法:

    1. 在 SQL Server 机器上,打开“Windows Defender 防火墙”。
    2. 点击“允许应用或功能通过 Windows Defender 防火墙”。
    3. 在列表中找到“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 服务是必需的,它会告诉客户端命名实例在哪个动态端口上监听。

  • 操作方法:
    1. 同样在“服务”管理器 (services.msc) 中找到 SQL Server Browser
    2. 确保其状态为“正在运行”,启动类型”为“自动”。
    3. 此服务默认监听 UDP 1434 端口,请确保防火墙也允许此端口的入站流量。

第三步:检查 SQL Server 服务器端配置

如果以上网络层面都正常,问题可能出在 SQL Server 内部的安全配置上。

检查身份验证模式

SQL Server 有两种身份验证模式:Windows 身份验证混合模式

  • Windows 身份验证: 只能使用 Windows 用户账户登录,如果客户端不在同一个域或工作组,或者 SQL Server 配置为仅限 Windows 身份验证,连接就会失败。

  • 混合模式: 可以使用 Windows 身份验证,也可以使用 SQL Server 身份验证(用户名和密码)。

  • 操作方法:

    1. 使用 Windows 身份验证 连接到 SQL Server Management Studio (SSMS)。
    2. 右键点击服务器 -> 属性
    3. 在“安全性”页面,查看“服务器身份验证”。
    4. 如果你想使用 SQL Server 账号登录,必须选择 “SQL Server 和 Windows 身份验证模式”,然后点击“确定”。
    5. 修改后需要重启 SQL Server 服务。

检查登录账户和权限

即使启用了混合模式,你使用的 SQL Server 账号也可能被禁用或没有权限。

  • 操作方法:
    1. 以 Windows 身份验证登录 SSMS。
    2. 展开“安全性” -> “登录名”。
    3. 找到你尝试登录的账号(如 sa),右键点击 -> 属性
    4. 在“常规”页面,确保 “强制实施密码策略” 未被勾选(对于测试环境),“已启用” 被勾选。
    5. 在“用户映射”页面,确保该账号被授予了访问你想要连接的数据库的权限(至少是 public 角色)。

检查 TCP/IP 端口是否被动态分配

TCP/IP 协议的端口被设置为动态,客户端就很难连接。

  • 操作方法:
    1. 打开 SQL Server 配置管理器
    2. 找到 TCP/IP 协议,右键点击 -> 属性
    3. IP 地址 标签页,滚动到最底部的 IPAll
    4. 确保 TCP 动态端口 是一个空值,TCP 端口 明确设置为 1433
    5. 修改后,重启 SQL Server 服务

第四步:使用 SQL Server 配置管理器进行客户端测试

这是一个非常强大的诊断工具,可以绕过 SSMS 的一些设置,直接测试底层连接。

  • 操作方法:
    1. 在客户端机器上,打开 SQL Server 配置管理器
    2. 在左侧导航栏中,展开“SQL Native Client 配置”或“SQL Server 网络配置”(取决于你的客户端库版本)。
    3. 在右侧,右键点击 “别名” -> “新建别名(N)...”
    4. 别名: 任意输入一个名字,TestAlias服务器: 输入 SQL Server 的计算机名或 IP 地址。 网络库: 选择 TCP/IP端口: 输入 1433
    5. 点击“确定”创建别名。
    6. 在 SSMS 中,服务器名称就填写你刚刚创建的别名 TestAlias,然后尝试连接。
    7. 如果使用别名连接成功,说明问题出在客户端的名称解析上(可能是 DNS 问题或hosts文件
分享:
扫描分享到社交APP
上一篇
下一篇