MS SQL DBCC CHECKDB page ID (1:xxx) contains an incorrect page ID

consistencydbcc-checkdb

Fistly, yes I'm aware that there are two options 1) is to restore or 2) run DBCC with allow data loss. But I'd like to understand what exactly is corrupted and what possible data loss could be. From DBCC CHECKDB these are the only errors

Msg 8909, Level 16, State 1, Line 1 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page ID (1:24694884) contains an incorrect page ID in its page header. The PageId in the page header = (0:0).
Msg 8909, Level 16, State 1, Line 1 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page ID (1:24694885) contains an incorrect page ID in its page header. The PageId in the page header = (0:0).
Msg 8909, Level 16, State 1, Line 1 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page ID (1:24694886) contains an incorrect page ID in its page header. The PageId in the page header = (0:0).
Msg 8909, Level 16, State 1, Line 1 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page ID (1:24694887) contains an incorrect page ID in its page header. The PageId in the page header = (0:0).
Msg 8939, Level 16, State 5, Line 1 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page (1:24694888). Test (m_headerVersion == HEADER_7_0) failed. Values are 0 and 1.
Msg 8939, Level 16, State 6, Line 1 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page (1:24694888). Test ((m_type >= DATA_PAGE && m_type <= UNDOFILE_HEADER_PAGE) || (m_type == UNKNOWN_PAGE && level == BASIC_HEADER)) failed. Values are 0 and 0.
Msg 8939, Level 16, State 7, Line 1 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page (1:24694888). Test (m_freeData >= PageHeaderOverhead () && m_freeData <= (UINT)PAGESIZE – m_slotCnt * sizeof (Slot)) failed. Values are 0 and 8192. Service Broker
Msg 9675, State 1: Message Types analyzed: 14. Service Broker
Msg 9676, State 1: Service Contracts analyzed: 6. Service Broker
Msg 9667, State 1: Services analyzed: 3. Service Broker
Msg 9668, State 1: Service Queues analyzed: 3. Service Broker
Msg 9669, State 1: Conversation Endpoints analyzed: 0. Service Broker
Msg 9674, State 1: Conversation Groups analyzed: 0. Service Broker
Msg 9670, State 1: Remote Service Bindings analyzed: 0. Service Broker
Msg 9605, State 1: Conversation Priorities analyzed: 0.

CHECKDB found 0 allocation errors and 7 consistency errors not associated with any single object.
then fine and then

Msg 8978, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 10, partition ID 72057774144880640, alloc unit ID 72057774266253312 (type In-row data). Page (1:2720992) is missing a reference from previous page (1:24661767). Possible chain linkage problem.
Msg 8978, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 13, partition ID 72057774145011712, alloc unit ID 72057774266384384 (type In-row data). Page (1:17132104) is missing a reference from previous page (1:24694888). Possible chain linkage problem.
Msg 8939, Level 16, State 98, Line 1 Table error: Object ID 1880468102, index ID 10, partition ID 72057774144880640, alloc unit ID 72057774266253312 (type In-row data), page (1:24661767). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 133129 and -4.
Msg 8928, Level 16, State 1, Line 1 Object ID 1880468102, index ID 10, partition ID 72057774144880640, alloc unit ID 72057774266253312 (type In-row data): Page (1:24661767) could not be processed. See other errors for details.
Msg 8976, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 10, partition ID 72057774144880640, alloc unit ID 72057774266253312 (type In-row data). Page (1:24661767) was not seen in the scan although its parent (1:2927950) and previous (1:11145041) refer to it. Check any previous errors.
Msg 8939, Level 16, State 98, Line 1 Table error: Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data), page (1:24694883). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 133129 and -4.
Msg 8928, Level 16, State 1, Line 1 Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data): Page (1:24694883) could not be processed. See other errors for details.
Msg 8928, Level 16, State 1, Line 1 Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data): Page (1:24694884) could not be processed. See other errors for details.
Msg 8928, Level 16, State 1, Line 1 Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data): Page (1:24694885) could not be processed. See other errors for details.
Msg 8928, Level 16, State 1, Line 1 Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data): Page (1:24694886) could not be processed. See other errors for details.
Msg 8928, Level 16, State 1, Line 1 Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data): Page (1:24694887) could not be processed. See other errors for details.
Msg 8928, Level 16, State 1, Line 1 Object ID 1880468102, index ID 13, partition ID 72057774145011712, alloc unit ID 72057774266384384 (type In-row data): Page (1:24694888) could not be processed. See other errors for details.
Msg 8976, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data). Page (1:24694883) was not seen in the scan although its parent (1:24696205) and previous (1:24694882) refer to it. Check any previous errors. >Msg 8980, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data). Index node page (1:24696205), slot 57 refers to child page (1:24694884) and previous child (1:24694883), but they were not encountered.
Msg 8980, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data). Index node page (1:24696205), slot 58 refers to child page (1:24694885) and previous child (1:24694884), but they were not encountered.
Msg 8980, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data). Index node page (1:24696205), slot 59 refers to child page (1:24694886) and previous child (1:24694885), but they were not encountered.
Msg 8980, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data). Index node page (1:24696205), slot 60 refers to child page (1:24694887) and previous child (1:24694886), but they were not encountered.
Msg 8976, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 13, partition ID 72057774145011712, alloc unit ID 72057774266384384 (type In-row data). Page (1:1) was not seen in the scan although its parent (1:2934717) and previous (1:17132103) refer to it. Check any previous errors.
Msg 8978, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data). Page (1:24694920) is missing a reference from previous page (1:24694887). Possible chain linkage problem. DBCC results for 'tb_ExternSale'. There are 96199140 rows in 2665693 pages for object "tb_ExternSale".

CHECKDB found 0 allocation errors and 19 consistency errors in table 'tb_ExternSale' (object ID 1880468102).

The pages from first part refer to the same pages with tb_ExternSale table having issues. Is it correct to assume that tb_ExternSale data is the only one that has data etc. corruption? and is it possible to identify rows?

Best Answer

After reading this answer I would suggest you to read Paul Randal's blog who is expert in corruption issues. You are most likely to find better answer on his blogs.

Msg 8909, Level 16, State 1, Line 1 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page ID (1:24694884) contains an incorrect page ID in its page header. The PageId in the page header = (0:0).

The message is bit misleading as ideally there cannot be a table with object id 0 and inex ID -1. I would quote from Paul Randal's blog

There’s a data structure I invented when I rewrote DBCC CHECKDB for SQL Server 2005 called a DbccCombinedID, which encapsulates all the relevant IDs that identify where a page belongs. The default values for object, index, and partition IDs are 0, -1, and 0, respectively. When the page is read by DBCC CHECKDB, the allocation unit ID is calculated (see here for the algorithm) from the m_objId and m_indexId fields in the page header, and then DBCC CHECKDB does all the metadata look-ups to figure out the other IDs. If the page header is corrupt such that the calculated allocation unit ID isn’t valid, the other IDs can’t be populated and the ‘owner’ of the page cannot be found. There will likely be other error messages referencing the corrupt page as well.

This basically means there was meta data corruption and checkdb tried finding out page ID and index information but was no able to, so got the value as zero.

Msg 8978, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 10, partition ID 72057774144880640, alloc unit ID 72057774266253312 (type In-row data). Page (1:2720992) is missing a reference from previous page (1:24661767). Possible chain linkage problem.

As per above the corruption is with non clustered index (Index ID 10) and there are possibilities that if you rebuild these non clustered indexes the corruption may disappear without data loss. The chain linkage problem signifies that somehow storage has corrupted the whole 64 KB of page and there is no "correct link" between the pages which used to be before, the index pages are linked by doubly linked list (using the m_nextPage and m_prevPage fields in their page headers). Again blog Use DBCC Page to find what would be deleted in repair would be helpful in giving you idea what could get removed if you run repair.

Msg 8980, Level 16, State 1, Line 1 Table error: Object ID 1880468102, index ID 1, partition ID 72057774144749568, alloc unit ID 72057774266056704 (type In-row data). Index node page (1:24696205), slot 58 refers to child page (1:24694885) and previous child (1:24694884), but they were not encountered.

This error message is for clustered index (index ID 1), the corruption is in clustered index which basically means the table. Running repair is most likely to give you data loss.

Cause:

Corruption doesnt comes out of blue, the most likely cause is bad hardware or may be bad memory stick. Your task is to find out from SQL Server errorlog and windows event viewer what is that. Unless you find it and fix it your issue is not solved.

Advise:

As I see here restoring from good backup is the most preferred option. Hope you have one