故障排除:超时时间已到
当 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 端口号。若要连接到特定端口,可使用别名。
![]() |
---|
若要帮助解决连接问题,请使用教程教程:数据库引擎入门。 |