TDS预登录数据包的版本为0 [英] TDS pre-login packet has version 0
问题描述
我遇到的问题是JDBC连接从客户端(Windows Server 2012)到服务器(Windows Server上托管的MSSQL Server 2012 SP2)的超时:
The problem I'm encountering is JDBC connectivity time out from client (Windows Server 2012) to server (MSSQL Server 2012 SP2 hosted on Windows Server):
"连接超时已过期。 尝试
消耗登录前握手确认时经过的超时时间。 这可能是因为登录前握手失败或服务器无法及时回复。 尝试连接此服务器时花费的时间是 - [Pre-Login] initialization = 273;
握手= 29736; (Microsoft SQL Server,错误:-2)"
我们分析了数据包跟踪,之后在TCP握手中,客户端向服务器发送TDS预登录数据包,但是表示版本的字节都设置为0。 服务器没有响应,因此客户端重新发送,最终客户端
向服务器发送TCP重置。
We analyzed a packet trace, and after the TCP handshake, the client sends a TDS pre-login packet to the server, but with the bytes representing the version all set to 0. The server doesn't respond, so the client re-transmits and eventually the client sends a TCP reset to the server.
我怀疑版本0导致服务器没有响应,虽然协议表明服务器必须以某种方式响应... (详见"3.3.5.1初始状态" - 我无法发布链接。)
I suspect having version 0 leads to the server not responding, though the protocol indicates the server MUST respond in some way... (Detailed in "3.3.5.1 Initial State" - I cannot post links.)
其他详细信息:
- 端口1433在客户端和服务器上都已打开。
- 没有网络或软件过滤从客户端到服务器的流量。
- 连接到server 使用相同的连接字符串从不同域上的其他计算机成功。
- 从数据链路层的客户端到服务器的连接成功(使用数据链接编辑器测试)。
- 在客户端和服务器上都启用了IPv4和IPv6的TCP / IP。
- 在两台服务器上都启用了TLS。
- 我们使用Squirrel SQL尝试了3种不同的JDBC驱动程序&安培; MSSQL Server Management Studio。 所有都提供相同的错误。 驱动程序引用正确的DLL。
- 从客户端到服务器的Tracert成功完成。
- 我们已尝试修改连接字符串以强制信任服务器认证,强制加密,增加 ;连接超时值等于几分钟等。
- 在客户端上使用.NET 4.5,但.NET 4.5也用于可以成功连接到服务器的其他计算机上。
- Port 1433 is open on both the client and server.
- No network or software is filtering traffic from client to server.
- Connectivity to the server is successful from other machines on different domains using the same connection string.
- Connectivity is successful from client to server at the data link layer (tested using Data Link Editor).
- TCP/IP is enabled for IPv4 and IPv6 on both the client and server.
- TLS is enabled on both servers.
- We have tried 3 different JDBC drivers using Squirrel SQL & MSSQL Server Management Studio. All provide the same error. The drivers refer to the correct DLLs.
- Tracert from client to server completes successfully.
- We have tried modifying the connection string to force trust of the server certification, force encryption, increase connection timeout value to several minutes, etc.
- .NET 4.5 is used on the client, but .NET 4.5 is also used on other machines that can successfully connect to the server.
什么可能导致TDS预登录数据包的版本设置为0?
What could cause the TDS pre-login packet to have the version set to 0?
推荐答案
您好autotelic,
Hello autotelic,
感谢您发布您的问题。我们的工程师之一会回复。
Thank you for posting your question. One of our engineers will respond.
谢谢,
这篇关于TDS预登录数据包的版本为0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!