BUG: DB-Lib Unable to Handle Burst of TDS Packets Under TCP/IP

ID: Q152063


The information in this article applies to:

BUG# NT: 15078

SYMPTOMS

Under TCP/IP socket Net-Library, a DB-Library (DB-Lib) application may not be able to handle a large number of TDS packets that are sent back to the client very quickly. As a result, the following error occurs, which also breaks the connection:

DB-Library: Possible network error: Read from SQL Server failed.
Net-Library error 0: (null)


CAUSE

When TCP/IP sends a large number of small TDS packets to clients, TCP tends to coalesce those small data packets. With the TCP windowing mechanism, the client's receive buffer typically contains numerous TDS packets waiting to be fetched by DB-Lib. When this happens, DB-Lib may incorrectly process the incoming data. The problem is more likely to occur with a faster server and a slower client.


WORKAROUND

This problem only occurs under TCP/IP; therefore, you may want to use other IPCs (such as named pipes, IPX/SPX, or RPC) instead.

Also, reducing the window size on the client side TCP/IP can make the problem less likely to occur.


STATUS

Microsoft has confirmed this to be a problem in Microsoft SQL Server DB- Library versions 6.5 and 6.0. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

Additional query words: bundling Nagle bad token dblib


Keywords          : kbprg SSrvDB_Lib kbbug6.50 kbbug6.00 
Version           : 6.0 6.5
Platform          : WINDOWS 
Issue type        : 

Last Reviewed: March 27, 1999