适用于: SQL Server

连接到 SQL Server 实例时,可能会遇到以下一个或多个 错误消息 。 本文提供了一些步骤来帮助你排查这些错误,这些错误按从简单到复杂的顺序排列。

完整的错误消息因应用程序和服务器环境中使用的客户端库而异。 可以查看以下详细信息,检查是否遇到以下错误消息之一:

provider: Named Pipes Provider, error: 40 - 无法打开与 Microsoft SQL Server SQL Server (的连接,错误: 53) 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。 找不到或无法访问服务器。 验证实例名称是否正确,以及是否将 SQL Server 配置为允许远程连接。
提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接(Microsoft SQL Server,错误:53)
提供程序:TCP 提供程序,错误:0 - 未知此类主机。 (Microsoft SQL Server,错误:11001)

提供程序: SQL 网络接口, 错误: 26 - 查找指定的服务器/实例时出错 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。 找不到或无法访问服务器。 验证实例名称是否正确,以及是否将 SQL Server 配置为允许远程连接。
提供程序:SQL 网络接口,错误:26 - 定位指定的 Server/Instance 时出错

登录超时已过期 SQL Server Native Client 数据链接错误
[Microsoft SQL Server Native Client 10.0]:登录超时已过期
[Microsoft SQL Server Native Client 10.0]:与 SQL Server 建立连接时发生网络相关或特定于实例的错误。 找不到或无法访问服务器。 检查实例名称是否正确,以及是否将 SQL Server 配置为允许远程连接。 有关详细信息,请参阅 SQL Server Books Online。
[Microsoft SQL Server Native Client 10.0]:SQL Server网络接口:查找指定的服务器/实例时出错 [xFFFFFFFF]。
连接尝试失败,因为连接方在一段时间后未正确响应,或者建立连接失败,因为连接的主机无法响应 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。 找不到或无法访问服务器。 验证实例名称是否正确,以及是否将 SQL Server 配置为允许远程连接。
提供程序:TCP 提供程序,错误:0
连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机无法响应而建立连接失败。
Microsoft SQL Server,错误:10060

提供程序:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。 找不到或无法访问服务器。 验证实例名称是否正确,以及是否将 SQL Server 配置为允许远程连接。
提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接
Microsoft SQL Server,错误:53
找不到网络路径。

[Microsoft][SQL Server Native Client 11.0]TCP 提供程序:无法建立连接,因为目标计算机主动拒绝连接 SQL Server Native Client 数据链接错误
[Microsoft][SQL Server Native Client 11.0] TCP 提供程序:无法建立连接,因为目标计算机主动拒绝了它。
[Microsoft][SQL Server Native Client 11.0] 登录超时已过期。
[Microsoft][SQL Server Native Client 11.0] 在与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。 找不到或无法访问服务器。 检查实例名称是否正确,以及是否将 SQL Server 配置为允许远程连接。 有关详细信息,请参阅 SQL Server Books Online。

“SQL Server 不存在或访问被拒绝”

此错误通常意味着客户端无法找到 SQL Server 实例。 当存在至少一个以下问题时,就会出现此问题:

  • 托管 SQL Server 的计算机的名称错误。
  • 实例无法解析正确的 IP。
  • 未正确指定 TCP 端口号。
  • 若要排除高可用性场景中的连接问题,请参阅以下文章:

  • 连接到 Always On 可用性组侦听器

  • Always On 故障转移群集实例 (SQL Server)

    收集用于排除错误的信息

    建议使用以下选项之一收集本部分中列出的信息,然后继续执行排除错误的实际步骤。

    选项 1:使用 SQL Check 工具收集所需的信息

    如果可以在本地登录到 SQL Server 计算机并具有管理员访问权限,请使用“Microsoft SQL 网络 GitHub 库” 中的 SQLCheck。 此工具在一个文件中提供进行故障排除所需的大部分信息。 查看该工具的主页,了解有关使用该工具及其收集的信息的详细说明。 还可以检查建议的 先决条件 和清单页。

    选项 2:使用以下过程单独收集数据

    从 Configuration Manager 获取实例名称

    在托管 SQL Server 实例的服务器上,使用 SQL Server Configuration Manager 验证实例名称:

    安装 SQL Server 时,Configuration Manager 会自动安装到计算机上。 有关启动 Configuration Manager 的说明因 SQL Server 和 Windows 版本而略有不同。 有关特定于版本的详细信息,请参阅 SQL Server Configuration Manager

  • 登录到托管 SQL Server 实例的计算机。

  • 启动 SQL Server 配置管理器。

  • 在左窗格中,选择“SQL Server 服务”

  • 在右窗格中,验证数据库引擎实例的名称。

  • SQL SERVER (MSSQLSERVER) 指示 SQL Server 的默认实例。 默认实例的名称是 <计算机名称>。
  • SQL SERVER (<实例名称>) 指示SQL Server的命名实例。 命名实例的名称是 <计算机名称>\<实例名称>。
  • 获取服务器的 IP 地址。

    可以使用以下步骤获取托管 SQL Server 实例的计算机的 IP 地址。

  • 在“开始” 菜单上,选择“运行” 。 在“运行” 窗口中,键入“cmd” ,然后选择“确定”

  • 在“命令提示符” 窗口中,键入“ipconfig/all” ,然后按 Enter 。 记下 IPv4 地址和 IPv6 地址。

    SQL Server 可以使用 IP 版本 4 协议或 IP 版本 6 协议进行连接。 你的网络可能允许使用其中一种或同时使用这两种。

    获取实例的 TCP 端口

    在大多数情况下,你要使用 TCP 协议连接到另一台计算机上的数据库引擎。 要获取实例的 TCP 端口,请按照以下步骤操作:

  • 在运行 SQL Server 的计算机上使用 SQL Server Management Studio 并连接到 SQL Server 实例。 在“对象资源管理器” 中,展开“管理” ,展开“SQL Server 日志” ,然后双击当前日志。

  • 在“日志文件查看器” 中,选择工具栏上的“筛选器” 。 在“消息包含文本” 框中,键入“服务器正在侦听” ,选择“应用筛选器” ,然后选择“确定”

  • 应列出服务器 正在侦听 [ 'any' <ipv4> 1433] 等消息。

    此消息指示 SQL Server 实例正在侦听此计算机上的所有 IP 地址(对于 IP 版本 4)和 TCP 端口 1433。 (TCP 端口 1433 通常是数据库引擎或 SQL Server 的默认实例使用的端口。只有一个 SQL Server 实例可以使用此端口。如果安装了多个 SQL Server 实例,某些实例必须使用其他端口号。) 记下尝试连接到的 SQL Server 实例使用的端口号。

  • IP 地址 127.0.0.1 可能已列出。 它被称为环回适配器地址。 只有同一台计算机上的进程可以使用该 IP 地址进行连接。
  • 还可以使用文本编辑器查看 SQL Server 错误日志。 默认情况下,错误日志位于 Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG 和 ERRORLOG.n 文件中。 有关详细信息,请参阅 查看 SQL Server 错误日志
  • 在 SQLCheck 文件中搜索输出以获取“SQL Server 信息”。

  • 在标题为“感兴趣的服务”部分中,在“名称” 和“实例” (命名实例)列下查找 SQL Server 实例,并使用“开始” 列查看其状态。 如果值为 True ,则启动服务。 否则,服务当前未运行。

  • 如果服务未运行,请使用 Microsoft SQL Server Management Studio、SQL Server 配置管理器、 PowerShell 或 Services applet 启动服务

    选项 2:使用 SQL Server 配置管理器

    要验证实例是否正在运行,请在“SQL Server 配置管理器” 中选择“SQL Server 服务” ,然后由 SQL Server 实例检查该符号。

  • 绿色箭头指示实例正在运行。
  • 红色方块指示实例已停止。
  • 如果实例已停止,请右键单击该实例,然后选择“启动” 。 然后,服务器实例启动,指示器变成绿色箭头。

    选项 3:使用 PowerShell 命令

    可以在 PowerShell 中使用以下命令检查系统上 SQL Server 服务的状态:

    Get-Service | Where {$_.status -eq 'running' -and $_.DisplayName -match "sql server*"}
    

    可以使用以下命令搜索特定字符串“SQL Server 现已准备好进行客户端连接”的错误日志文件。 这是一条信息性消息;无需执行任何用户操作。”:

    Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "SQL Server is now ready for client connections."
    

    步骤 2:验证 SQL Server 浏览器服务是否正在运行

    此步骤仅用于对命名实例的连接问题进行疑难解答。

    选项 1:使用 SQLCheck 工具中的输出文件

  • 在 SQLCheck 文件中搜索输出以获取“SQL Server 信息”。

  • 在标题为“感兴趣的服务”部分中,在“名称”列中搜索 SQLBrowser,并使用“已启动”列查看其状态。 如果值为 True,则服务已启动。 否则,服务当前未运行,需要启动它。 有关详细信息,请参阅启动、停止、暂停、恢复、重启 SQL Server 服务

    选项 2:使用 SQL Server 配置管理器

    要连接到命名实例,SQL Server 浏览器服务必须正在运行。 在“SQL Server 配置管理器”中,找到“SQL Server浏览器”服务并验证它是否正在运行。 如果它未运行,请启动该服务。 默认实例不需要 SQL Server 浏览器服务。

    有关在环境中使用 SQL Server 浏览器服务的详细信息,请参阅 SQL Server 浏览器服务

    有关停止和启动 SQL Services 的详细信息,请参阅启动、停止、暂停、恢复、重启 SQL Server 服务

    如果无法在环境中运行 SQL Server 浏览器服务,请参阅在不使用 SQL Server 浏览器服务的情况下连接到 SQL Server 命名实例

    步骤 3:验证连接字符串中的服务器名称

    在连接字符串中指定错误的服务器名称时,通常会遇到错误。 确保服务器名称与前面步骤中检索到的服务器名称匹配。

    如果使用的是 SQLCheck 工具,请查看输出文件的“计算机信息”部分中的“NetBios 名称/FQDN”值。

  • 有关连接字符串的示例,请参阅 SQL Server 连接字符串
  • 有关更详细的示例,请参阅“SQL 客户端编程主页”下的使用 ADO.NET 连接到 SQL 的概念证明
  • 步骤 4:验证客户端计算机上的别名

    当使用备用名称连接到 SQL Server 或网络中存在名称解析问题时,通常会在客户端环境中使用别名。 它们是使用 SQL Server 配置管理器客户端网络实用工具创建的。 不正确的别名可能导致应用程序连接到错误的服务器,从而导致失败。 请按照以下方法检查不正确的别名。 还可以使用工具,例如客户端计算机上的(SQLCHECK)检查客户端计算机上的别名和各种其他连接相关设置。

    以下选项仅适用于使用 SQL Server Native Client 连接到 SQL Server 的应用程序。

    选项 1:使用 SQLCheck 工具中的输出文件

  • 在 SQLCheck 输出文件中,搜索字符串 SQL 别名。 (此字符串将包含在文件的客户端安全和驱动程序信息部分)

  • 查看表中的条目。 如果不存在,则计算机上没有别名。 如果有条目,请查看信息以确保服务器名称和端口号设置为正确的值。

    示例输出:
    SQL 别名:

    Alias Name   Protocol   Server Name     Port   32-bit 
    ----------   --------   ------------    ----   ------ 
    prodsql      TCP        prod_sqlserver  1430      
    

    以上表示prodsql是在端口 1430 上运行的 SQL Server 的别名,别名为prod_sqlserver

    选项 2:检查 SQL Server 配置管理器中的别名

  • 在“SQL Server 配置管理器”中,展开“SQL Server Native Client 配置”,然后选择“别名”
  • 检查尝试连接到的服务器是否定义了任何别名。 如果存在别名,请执行以下步骤:
    1. 打开别名的“属性”窗格。
    2. 重命名“别名”字段中的值(例如,如果服务器名称为 MySQL,请将其重命名为 MySQL_test)并重试连接。 如果可以连接,则别名不正确,可能来自不再需要的旧配置。 如果不能连接,请将别名重命名回其原始名称,然后转到下一步。
    3. 检查别名的连接参数,并确保它们是正确的。 以下常见情况可能导致连接问题:
  •