故障排除:强行关闭的连接
使用 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 Server 2003 SP1 上运行时,连接可能被强行关闭
当使用大量到 Windows Server 2003 Service Pack 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 泛滥和拒绝服务攻击的威胁。只有在必要并且了解这些安全风险的情况下,才可以添加此注册表值。完成测试后,请删除此注册表值。 |