BUG: Multiple Cursors Inside Explicit Trans. Can Cause AVID: Q150940
|
Using multiple cursors inside an explicit transaction and updating the table on which a cursor is declared causes a thread-level handled access violation (AV) during FETCH.
Avoid using multiple cursors inside an explicit transaction or use implicit transactions. This access violation happens only when the table is updated inside an explicit (user-defined) transaction.
Microsoft has confirmed this to be a problem in Microsoft SQL Server
version 6.0. We are researching this problem and will post new information
here in the Microsoft Knowledge Base as it becomes available.
This problem does not occur in Microsoft SQL Server version 6.5.
The access violation occurs on the FETCH statement on repetitive cursor
queries that open and close multiple cursors and update another table using
one open cursor. A sample code fragment may look like:
begin tran
declare cursor as select col1 from table1
fetch one row
while @@fetch_status=0
begin
declare another cursor on another table
do some processing with local variables
close and deallocate
update table1.colx with some info, maybe from above local variables
fetch next ---> this is where the AV occurs
end
commit tran
Additional query words: AV cursor leak
Keywords : kbprg SSrvProg kbbug6.00
Version : 6.0
Platform : WINDOWS
Issue type :
Last Reviewed: March 25, 1999