FIX: Sp_cursorfetch May Cause Errors 614 and 605

ID: Q159781


The information in this article applies to:

BUG #: 14588 (WINDOWS: 6.50)

SYMPTOMS

If DYNAMIC CURSOR was opened through sp_cursoropen, and sp_cursor was used to delete all rows from the table, subsequent calls to sp_cursorfetch with any fetch type will fail, generating error 614. After the error occurs, 'drop table' fails, and you will receive Msg 3702 until the server is restarted, even if the cursor has been closed. This problem may also cause transient error 605 on the table if CURSOR is used repeatedly under this condition. DBCC CHECKTABLE shows no corruption in the table. Regular Transact SQL statements, such as SELECT, UPDATE, or DELETE still work fine on the same table. The text of the error messages follows:

Error : 614, Severity: 21, State: 3
A row on page %ld was accessed that has an illegal length of 0 in
database '%s'.

Getpage: bstat=0x1008/0, sstat=0x82000091, disk
pageno is/should be: objid is/should be:
0x342(834) 0x8(8)
0x342(834) 0x7053b3f3(1884533747)
... extent objid 0x7053b3f3, mask 0x3/0, next/prev=0x340/0x340
... retry bufget after purging bp 0xf26d40

Error : 605, Severity: 21, State: 1
Attempt to fetch logical page %ld in database '%ld' belongs to object
'syslogs', not to object '%s'.

Msg 3702, Level 16, State 1
Cannot drop the table '%s' because it is currently in use.


WORKAROUND

To work around this problem, use the Keyset cursor instead.


STATUS

Microsoft has confirmed this to be a problem in Microsoft SQL Server versions 4.2x, 6.0, and 6.5. 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: RPC RELATIVE


Keywords          : kbprg SSrvGen kbbug6.50 kbbug4.2x kbbug6.00 kbfix6.50.sp2 
Version           : 4.2x 6.0 6.5
Platform          : WINDOWS 
Issue type        : 

Last Reviewed: April 4, 1999