FIX: Attentions During Reformatting May Cause Error 1108 in Tempdb (195543)



The information in this article applies to:

  • Microsoft SQL Server 6.5

This article was previously published under Q195543
BUG #: 18131; 17558 (SQLBUG_65)

SYMPTOMS

If a query performing a reformatting strategy is prematurely interrupted by means of either a query timeout or a cancel request, a runtime error 1108 may be generated in tempdb. The object ID will be a negative number, indicating that the object is a worktable. The following is message 1108:

Msg 1108: Cannot deallocate extent 3200, database 2. Object id -1440009985, index id 0, status 194 in extent does not match object id object id -2050, index id 1, status 0 in object being deallocated. Run DBCC CHECKALLOC.

WORKAROUND

To work around this problem, analyze showplan for the query and see if any index changes can be made that will avoid the reformatting step. The reformatting execution strategy is typically used when no useful indexes are available for processing the query. Therefore, such index changes will likely improve overall performance.

STATUS

Microsoft has confirmed this to be a problem in SQL Server 6.5. This problem has been corrected in Service Pack 5a for Microsoft SQL Server 6.5.For more information, click the following article number to view the article in the Microsoft Knowledge Base:

197177 INF: How to Obtain SQL Server 6.5 Service Pack 5a

For more information, contact your primary support provider.

MORE INFORMATION

If the allocation error is in tempdb (dbid = 2), there is no need to run DBCC CHECKALLOC or DBCC NEWALLOC as the message implies. Simply restart SQL Server and tempdb will be recreated.

However, if you run either of the above allocation checks, you will typically notice error 2540 for the extents referenced in error 1108.

Msg 2540: Allocation Discrepancy: Page is allocated but not linked; check the following pages and ids...

Modification Type:MajorLast Reviewed:3/14/2006
Keywords:kbBug kbfix KB195543