Correcting allocation errors using the fix | nofix option

You can use the fix | nofix option with dbcc checkalloc, dbcc tablealloc, and dbcc indexalloc. It specifies whether or not the command fixes the allocation errors in tables. The default for all user tables is fix. The default for all system tables is nofix.

Before you can use the fix option on system tables, you must put the database into single-user mode:

sp_dboption dbname, "single user", true

You can issue this command only when no one is using the database.

Output from dbcc tablealloc with fix displays allocation errors and any corrections that were made. The following example shows an error message that appears whether or not the fix option is used:

Msg 7939, Level 22, State 1:
Line 2:
Table Corrupt: The entry is missing from the OAM for object id 144003544 indid 0 for allocation page 2560.

When you use fix, the following message indicates that the missing entry has been restored:

The missing OAM entry has been inserted.

The fix | nofix option works the same in dbcc indexalloc as it does in dbcc tablealloc.