FIX: ROLLBACK of TRUNCATE TABLE May Cause Error 3301, AV (149939)



The information in this article applies to:

  • Microsoft SQL Server 6.5

This article was previously published under Q149939
BUG#: 14849 (6.50)

SYMPTOMS

A TRUNCATE TABLE command that is aborted or rolled back may get a 3301 error "Invalid log record found in Syslogs (logop 42)" and an access violation.

CAUSE

If the truncated table has an IDENTITY column and the TRUNCATE aborts, or is inside a user transaction which later does a ROLLBACK, this problem can occur.

WORKAROUND

If the purpose of the TRUNCATE TABLE is just to remove all the rows, use DELETE with no WHERE clause. If the purpose is also to reset the IDENTITY value, use DELETE with no WHERE clause then TRUNCATE TABLE, and make sure there is no user defined transaction at the time of the TRUNCATE TABLE via logic such as
delete t1
while @@trancount > 0
begin
   commit tran
end
truncate table t1
				

STATUS

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

Modification Type:MajorLast Reviewed:10/16/2003
Keywords:kbBug kbfix kbProgramming KB149939