当 sql Server 数据库引擎实例未运行、服务器名称键入错误或者存在网络问题或防火墙时,通常会发生“超时时间已到”错误。
错误文本
在 sql Server Management Studio 中,此错误显示为:
“无法连接到 <服务器名>。”
“超时时间已到。在操作完成之前超时时间已过或服务器未响应。(Microsoft sql Server,错误: -2)”
“sql 网络接口: 定位指定的服务器/实例时出错”
“sqlcmd: 错误: Microsoft sql Server NativeClient : 客户端无法建立连接。”
“sqlcmd: 错误: Microsoft sql Server NativeClient : 登录超时时间已到。”
“无法与 sql Server 建立连接”
“建立与服务器的连接时出错。当连接到 sql Server 时,此故障可能会因为 sql Server 在默认设置下不允许进行远程连接而引发的。”
此错误的常见原因
原因 |
|
键入的服务器名称不正确。 |
使用正确的服务器名称,然后重试。 |
服务器中的 sql Server 服务未运行。 |
|
将防火墙配置为允许访问数据库引擎。 |
|
数据库引擎由于已被更改或者不是默认实例而不侦听端口 1433,并且没有运行 sql Server browser 服务。 |
|
将防火墙配置为允许访问服务器上的 UDP 端口 1434,或者连接指定 TCP/IP 端口号。 |
|
客户端和服务器未配置为使用相同的网络协议。 |
|
网络无法将服务器名称解析为 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 端口号或命名管道)。
WindowsVista 或 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 地址的通信。
强行关闭的连接
使用 TCP/IP 连接到sql Server 时,可能会出现此错误。
错误文本
该错误出现时可能具有以下格式:
· TCP_PROV: 现有连接被远程主机强行关闭。
· 访问接口编号: 7,错误: 10054,错误消息:“TCP 访问接口: 现有连接已被远程主机强行关闭…”
· 未处理的异常: 在向服务器发送请求时发生传输级错误。(访问接口: TCP 访问接口,错误: 0 - 现有连接已被远程主机强行关闭。)
此错误的常见原因
原因 |
|
将客户端计算机更新为 sql Server Native Client 的服务器版本。 |
|
发生故障的网络硬件正在删除部分 TCP 通信。 |
使用网络监视程序分析 TCP SYN、ACK 和 FIN 消息。 |
SynAttackProtect设置可能正在删除连接。 |
请参阅后面的“在 Windows Server 2003 SP1 上运行时,连接可能被强行关闭”部分。 |
在 Windows Server2003 SP1 上运行时,连接可能被强行关闭
当使用大量到 Windows Server 2003 ServicePack 1 上运行的 sql Server 数据库引擎实例的客户端连接尝试测试可伸缩性时,如果请求到达的速度快于 sql Server 提供的连接速度,则 Windows 可能会删除这些连接。这是 Windows Server 2003 Service Pack 1 的一项安全功能,可实现有限的传入 TCP 连接请求队列。
若要解决此问题,请使用 regedit.exe 实用工具添加以下注册表项:
项 |
类型 |
值 |
|
HKEY_LOCAL_MACHINE\SYstem\CurrentControlSet\Services\Tcpip\Parameters\ |
DWORD |
SynAttackProtect |
00000000 |
安全说明: |
设置此注册表项可能会使服务器面临 SYN 泛滥和拒绝服务攻击的威胁。只有在必要并且了解这些安全风险的情况下,才可以添加此注册表值。完成测试后,请删除此注册表值 |
在管道的另一端没有进程
连接到 sql Server 的客户端如果在 sql Server 上未启用命名管道支持时连接到该服务器(即使可以使用其他协议,如TCP/IP),可能会遇到此命名管道错误。
如果服务器上未启用命名管道,则拒绝客户端试图使用命名管道进行连接。以下两种情况下会出现此错误:
· 客户端试图只使用命名管道进行连接,而服务器上未启用命名管道协议。
· 客户端试图使用任何可用的协议进行连接,但在客户端协议顺序中,named pipes 列在 TCP 之前。
错误文本
named pipes 提供程序:在管道的另一端没有进程。
Microsoft sql Server Native Client:通信链接失败。
Microsoft sql Server NativeClient:在与服务器建立连接时出现错误。当连接到 sql Server 时,此故障可能是因为 sql Server 在默认设置下不允许进行远程连接而引发的。
此错误的常见原因
原因 |
|
客户端试图使用 named pipes 进行连接,而服务器没有配置为允许使用 named pipes 进行远程连接。 |
|
客户端协议顺序是在尝试 TCP 协议之前试图使用 named pipes 协议进行连接,而服务器上未启用 named pipes。 |
在客户端计算机上使用 sql Server 配置管理器,在协议顺序列表中将 TCP 移动到 Named Pipes 之前。 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。