FIX: Infinite Loop Occurs in ESQL Application That Uses Keyset Cursor (306096)



The information in this article applies to:

  • Microsoft SQL Server 7.0
  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q306096
BUG #: 355216 (SHILOH_BUGS)
BUG #: 101723 (SQLBUG_70)
BUG #: 389 (MDAC_QFE)

SYMPTOMS

Applications built with Microsoft Embedded SQL for C (ESQL/C) may go into an infinite loop when a KEYSET cursor opens and another connection modifies the first row on the server before the row is fetched.

CAUSE

If a connection modifies a row in a KEYSET cursor, SQL Server generates error 601 and marks the row as missing in the keyset. Then, DBLIB sends a FTC_MISSING status to ESQL. ESQL should now ignore this row and fetch the next one; however, ESQL requests the first row in an infinite loop.

RESOLUTION

To resolve this problem, obtain the latest service pack for SQL Server 2000, the latest service pack for MDAC 2.6, or the hotfix referenced below. For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

290211 INF: How to Obtain the Latest SQL Server 2000 Service Pack

For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

300635 INFO: How to Obtain the Latest MDAC 2.6 Service Pack

Hotfix

NOTE: The following hotfix was created prior to Microsoft SQL Server 2000 Service Pack 2.

The English version of this fix should have the following file attributes or later:
   Date         Version         Size            File name
   ---------------------------------------------------------
   08/01/2001   2000.80.308.0   126,976 bytes   Sqlakw32.dll
				
NOTE: Due to file dependencies, the most recent hotfix or feature that contains the preceding files may also contain additional files.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Microsoft SQL Server 2000 Service Pack 2 and MDAC 2.6 Service Pack 2.

MORE INFORMATION

You can easily identify this bug in SQL Profiler by the occurrence of a 601 exception error and an endless series of identical calls of "sp_cursorfetch" that follow the 601 exception.

Modification Type:MinorLast Reviewed:9/26/2005
Keywords:kbHotfixServer kbQFE kbBug kbfix kbmdac260sp2fix KB306096