BUG: S1000 Error When Sharing Connection in Multiple Threads (175313)
The information in this article applies to:
- Microsoft ODBC Driver for SQL Server 2.0
- Microsoft ODBC Driver for SQL Server 3.0
- Microsoft Visual C++, 32-bit Enterprise Edition 5.0
- Microsoft Visual C++, 32-bit Enterprise Edition 6.0
- Microsoft Visual C++, 32-bit Professional Edition 5.0
- Microsoft Visual C++, 32-bit Professional Edition 6.0
- Microsoft Visual C++, 32-bit Learning Edition 6.0
This article was previously published under Q175313 SYMPTOMS
When you share a CDatabase object between multiple threads and use the SQL Server ODBC driver version 2.65.0240 or later, you may receive the following error message:
SQLSTATE: S1000
[Microsoft][ODBC SQL Server Driver]Connection is busy with the results
for another hstmt
When you use the Microsoft Data Access Components (MDAC) 2.6 driver, you may receive the following error message:
State:37000,Native:16909,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server]
sp_cursorfetch: The cursor identifier value provided (1) is not valid
CAUSE
This error occurs because of a timing conflict in the SQL Server ODBC
driver or MDAC 2.6 driver. If two threads are in the process of calling SQLPrepare(), followed by a SQLExecute() call, this error may occur.
RESOLUTION
Put CRecordset::Open() calls within a critical section to guarantee that
only one thread is executing a SQL command on the connection at a given
time.
On the SQL Server back end, it is recomended that you use different CDatabase objects for different threads.
STATUS
Microsoft has confirmed this to be a bug in the Microsoft SQL Server
driver.
Modification Type: | Major | Last Reviewed: | 12/3/2003 |
---|
Keywords: | kbbug kbDatabase KB175313 |
---|
|