Microsoft KB Archive/154295

= FIX: TDS Errors in a Multithreaded ODBC Application =

Article ID: 154295

Article Last Modified on 12/2/2002

-

APPLIES TO


 * Microsoft Open Database Connectivity 4.21

-



This article was previously published under Q154295



2.65

WINDOWS

kbusage kbinterop kbbug2.65 kbfix6.50.sp2



BUG #: 15705 (SQLBUG_65)



SYMPTOMS
When two or more threads share the same database connection (but different hstmts), a call to SQLExecDirect or SQLExecute fails, and one of the following errors occurs:

[Microsoft][ODBC SQL Server Driver][SQL Server] Received an unrecognized datatype 0 from TDS data stream

[Microsoft][ODBC SQL Server Driver]Unknown token received from SQL Server

[Microsoft][ODBC SQL Server Driver]Protocol error in TDS stream

The error(s) received depends on which network library (TCP/IP sockets or named pipes) is being used.



WORKAROUND
To work around this problem, do one of the following:


 * Use a Critical Section object around SQLExecDirect or SQLExecute.
 * Use a different connection for each thread, rather than sharing the same connection.
 * Add a Sleep function for about 1,000 to 5,000 milliseconds before SQLExecDirect or SQLExecute.



STATUS
Microsoft has confirmed this to be a problem in Microsoft SQL Server ODBC Driver version 2.65. This problem has been corrected in U.S. Service Pack 2 for Microsoft SQL Server version 6.5. For more information, contact your primary support provider.

Additional query words: MFC mfcdatabase Classes RDO Visual Basic

Keywords: kbbug kbfix KB154295

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.