这篇文章将为大家详细讲解有关如何解决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 之前。 |
关于如何解决SQLServer2008数据引擎连接问题就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。