这篇文章将为大家详细讲解有关如何解决SQLServer2008数据引擎连接问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

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

错误文本

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

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

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

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

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

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

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

“无法与 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 端口号或命名管道)。

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 版本连接。

将客户端计算机更新为 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/IP 进行连接,或使用 SQL Server 配置管理器通过 named pipes 进行远程连接。

客户端协议顺序是在尝试 TCP 协议之前试图使用 named pipes 协议进行连接,而服务器上未启用 named pipes。

在客户端计算机上使用 SQL Server 配置管理器,在协议顺序列表中将 TCP 移动到 Named Pipes 之前。