FIX: Concurrent Shrink Operations Against Heaps Can Result in Errors 8968, 8905, and 8906

Article translations Article translations
Article ID: 278366 - View products that this article applies to.
This article was previously published under Q278366
This article has been archived. It is offered "as is" and will no longer be updated.
BUG #: 58198 (SQLBUG_70)
Expand all | Collapse all

Symptoms

Concurrent shrink operations (DBCC SHRINKDATABASE or DBCC SHRINKFILE) against a database that contains tables without a clustered index (heaps) can result in the following errors when executing DBCC CHECKALLOC:
Server: Msg 8906, Level 16, State 1, Line 0
Page (1:947) in database ID 5 is allocated in the SGAM (1:3) and PFS (1:1), but was not allocated in any IAM. PFS flags 'MIXED_EXT ALLOCATED 95_PCT_FULL'.

Server: Msg 8905, Level 16, State 1, Line 0
Extent (1:960) in database ID 5 is marked allocated in the GAM, but no SGAM or IAM has allocated it.

Server: Msg 8968, Level 16, State 1, Line 0
Table Corrupt: IAM page (1:1041) (object ID 1413580074, index ID 0) is out of the range of this database.
and in addition this error when running CHECKDB:
Server: Msg 7965, Level 16, State 1, Line 0
Table corrupt: Could not check object ID 1413580074, index ID 0 due to invalid allocation (IAM) page(s).

Workaround

Serialize all execution of DBCC SHRINKFILE and SHRINKDATABASE against a database or file.

Status

Microsoft has confirmed this to be a problem in SQL Server 7.0. This problem has been corrected in U.S. Service Pack 3 for Microsoft SQL Server 7.0. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
274799 INF: How to Obtain Service Pack 3 for Microsoft SQL Server 7.0 and Microsoft Data Engine (MSDE) 1.0
For more information, contact your primary support provider.

More information

Any attempt to SELECT, INSERT, UPDATE, or DELETE from this table can result in the following error:
Error: 5180, Severity: 22, State: 1
Could not open FCB for invalid file ID 0 in database 'pubs'. Table or database may be corrupted..
When this problem occurs, one or more of the users executing the shrink can fail with a 8968 error that is eventually reported by CHECKDB or CHECKALLOC.

Another side affect of this problem is that unusual growth of tempdb may occur. Depending on the configured size of tempdb and the available disk space, a user can encounter Error 1105 because any allocation objects that are part of these errors cannot be reused.

DBCC CHECKDB or CHECKALLOC with REPAIR should correct these errors. DBCC UPDATEUSAGE should then be used to also correct sysindexes entries.

Properties

Article ID: 278366 - Last Review: October 26, 2013 - Revision: 3.0
Applies to
  • Microsoft SQL Server 7.0 Standard Edition
Keywords: 
kbnosurvey kbarchive kbbug kbfix KB278366

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com