故障排除:超时时间已到

当 SQL Server 数据库引擎实例未运行、服务器名称键入错误或者存在网络问题或防火墙时,通常会发生“超时时间已到”错误。

错误文本

在 SQL Server Management Studio 中,此错误显示为:

“无法连接到 <服务器名>。”

“超时时间已到。在操作完成之前超时时间已过或服务器未响应。(Microsoft SQL Server,错误: -2)”

sqlcmd 中,可能出现的超时错误包括:

“SQL 网络接口: 定位指定的服务器/实例时出错”

“Sqlcmd: 错误: Microsoft SQL Server Native Client : 客户端无法建立连接。”

“Sqlcmd: 错误: Microsoft SQL Server Native Client : 登录超时时间已到。”

“无法与 SQL Server 建立连接”

“建立与服务器的连接时出错。当连接到 SQL Server 时,此故障可能会因为 SQL Server 在默认设置下不允许进行远程连接而引发的。”

此错误的常见原因

原因

解决方法

键入的服务器名称不正确。

使用正确的服务器名称,然后重试。

服务器中的 SQL Server 服务未运行。

启动 SQL Server 数据库引擎实例。

数据库引擎实例的 TCP/IP 端口被防火墙阻塞。

将防火墙配置为允许访问数据库引擎。

数据库引擎由于已被更改或者不是默认实例而不侦听端口 1433,并且没有运行 SQL Server Browser 服务。

要么启动 SQL Server Browser 服务,要么指定 TCP/IP 端口号进行连接。

SQL Server Browser 服务正在运行,但 UDP 端口 1434 被防火墙阻塞。

将防火墙配置为允许访问服务器上的 UDP 端口 1434,或者连接指定 TCP/IP 端口号。

客户端和服务器未配置为使用相同的网络协议。

使用 SQL Server 配置管理器,确认服务器和客户端计算机至少有一个通用的启用协议。

网络无法将服务器名称解析为 IP 地址。可使用 PING 程序对此进行测试。

修复网络上的计算机名称解析问题,或者使用服务器的 IP 地址连接。这不是 SQL Server 问题。有关帮助,请参阅 Windows 文档或与网络管理员联系。

无法使用 IP 地址连接到网络。可使用 PING 程序对此进行测试。

修复网络上的 TCP/IP 问题。这不是 SQL Server 问题。有关帮助,请参阅 Windows 文档或与网络管理员联系。

不常见错误

多个服务器 IP 地址

在连接到群集或具有多个 IP 地址的非群集计算机上安装的 SQL Server 命名实例时,Windows Vista 或 Windows Server 2008 上的客户端可能会收到此错误。所有 SQL Server 版本都可能会出现这种问题。

原因

在连接到远程计算机上的命名实例时,客户端使用用户数据报协议 (UDP) 连接到 SQL Server 计算机或群集上的 SQL Server Browser 服务以获取连接端点(TCP 端口号或命名管道)。

Windows Vista 或 Windows Server 2008 客户端上的防火墙不允许对 UDP 进行松散源映射。即,响应必须是从所查询的相同 IP 地址中返回的。如果响应不是从最初针对的 IP 地址中返回的,客户端防火墙将删除数据包。在尝试连接到群集服务器或具有多个 IP 地址的非群集服务器计算机时,可能会出现这种问题。

下表介绍可导致 UDP 数据包被删除的操作系统组合。这可以阻止连接到 SQL Server 的命名实例或未在 TCP 端口 1433 上侦听的 SQL Server 默认实例。

客户端操作系统

运行 SQL Server 的操作系统

SQL Server 2008

结果

SQL Server 2005

结果

Windows XP 或 Windows Server 2003

Windows XP 或 Windows Server 2003

UDP 数据包未被删除。

UDP 数据包未被删除。

Windows XP 或 Windows Server 2003

Windows Vista 或 Windows Server 2003

UDP 数据包未被删除。

UDP 数据包未被删除。

Windows Vista 或 Windows Server 2008

Windows XP 或 Windows Server 2003

UDP 数据包被删除。无法连接。

UDP 数据包被删除。无法连接。

Windows Vista 或 Windows Server 2008

Windows Vista 或 Windows Server 2008(x86、IA64)

UDP 数据包未被删除。

UDP 数据包被删除。无法连接。

Windows Vista 或 Windows Server 2008

Windows Vista 或 Windows Server 2008 (x64)

UDP 数据包被删除。无法连接。

UDP 数据包被删除。无法连接。

解决方法

若要解决此问题,请执行以下操作之一:

  • 在连接字符串中,将 TCP 端口号或命名管道名称指定为服务器名称的一部分。

  • 在客户端计算机上具有高级安全功能的 Windows 防火墙中创建例外。

    注意事项注意

    如果在防火墙中创建例外,可能会使计算机或网络更容易受到恶意用户或恶意软件(如病毒)的攻击。建议您不要使用这种解决方法,此处提供该信息的目的是,如果没有切实可行的替代方法,您可以自行决定是否采用这种解决方法。

    例外可以是以下任一情况:

    • 为连接到 SQL Server 的应用程序添加例外规则。

    • 添加一个入站规则,以允许来自 SQL Server 计算机或群集的所有可能的 IP 地址的通信。

土耳其语或阿塞拜疆语

如果当前语言为土耳其语或阿塞拜疆语,并且服务器名称中包含“I”,则连接尝试可能会失败。若要避免出现这种问题,请使用 IP 地址连接到服务器。如果实例名中包含“I”,则请在连接时指定 TCP/IP 端口号。若要连接到特定端口,可使用别名。

注意注意

若要帮助解决连接问题,请使用教程教程:数据库引擎入门