none
TDS pre-login packet has version 0 RRS feed

  • Question

  • 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):

    "Connection Timeout Expired.  The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement.  This could be because the pre-login handshake failed or the server was unable to respond back in time.  The duration spent while attempting to connect to this server was - [Pre-Login] initialization=273; handshake=29736;  (Microsoft SQL Server, Error: -2)"


    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. 

    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.)

    Additional details:

    • 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.

    What could cause the TDS pre-login packet to have the version set to 0?

    Friday, February 22, 2019 6:35 PM

All replies

  • Hello autotelic,

    Thank you for posting your question. One of our engineers will respond. 

    Thanks,


    Jeff McCashland | Microsoft Protocols Open Specifications Team

    Friday, February 22, 2019 7:59 PM
    Moderator
  • Hello Autotelic, I will help you investigate this issue. Can you contact me at dochelp at microsoft dot com ? I will need to start with analyzing the network packet capture you have.

    Regards,
    Sreekanth Nadendla
    Microsoft Windows Open Specifications

    Friday, February 22, 2019 9:31 PM
    Moderator
  • I have sent Sreekanth the network captures, and I will post to this thread when a solution is reached.
    Monday, March 4, 2019 2:59 PM
  • UPDATE:

    This issue does not occur when using the same data access provider from a different machine. Also when this connectivity issue occurs, we've seen that the TDS traffic isn't reaching SQL Server. Since this is not a protocol issue, Autotelic was advised to post this question in SQL Server product specific forum for guidance.

    Regards,
    Sreekanth Nadendla
    Microsoft Windows Open Specifications

    Tuesday, March 12, 2019 3:07 PM
    Moderator