All You Need to Know About SQL Error 8931

SQL server error 8931 appears when the level, i.e. LEVEL1 does not abide by the level rules of the P_ID2 page; the parent page in the B-tree. The error looks similar to:

"Severity Level 16
Message Text
Table error: Object ID O_ID, index ID I_ID B-tree level mismatch, page P_ID1. Level LEVEL1 does not match level LEVEL2 from parent P_ID2."

This shows that in B-tree structure, there are two pages linked, that are

  • P_ID2 as parent
  • P_ID1 as a child.

AS per level rules; if level X is assigned to the parent page; child page must hold:

  • Level X-1, in case if the index is non-clustered;
  • Level X-1, in case of clustered index where the child page doesn't exist at leaf level.
  • Level 0, where child page exists at leaf level in clustered index with parent page.

Reason for Occurrence of Error

The root cause for existence of this error message is the corruption in the structure of B-tree pages. The SQL error 8931 takes place when the level in the child page shows incompliance with the level rules of parent page.

Methods to Resolve SQL Server Error 8931

Resolution 1: Check B-tree Pages: To detect the inconsistencies among the pages, examine P_ID1 and P_ID2 and check if error 8931 or any of its instances exists in B-tree.

Note: Error 8931 takes place in case of inconsistencies or mismatch among sibling level pages in B-tree.

Resolution 2: Hardware Detection: Thoroughly check all the hardware components to detect if the error message exists due to malfunctioning of any of the hardware elements. To detect this; the following measures can be adopted:

  • Check Error Logs: In MS SQL Server, check the error logs as well as Application logs in the Windows OS to detect the actual cause behind the occurrence of error.
  • Hardware Diagnostics: Hardware Diagnostics can be run to detect and check all the hardware components and to ensure if any inconsistencies takes place or not.
  • Reinstalling Application: Uninstall SQL Server application and then reinstall the same and check if the SQL error 8931 still takes place on the screen.

Note: It is recommended that before implementing any of the above mentioned measures, backup all the SQL database components to avoid data loss.

Resolution 3: Backup Restoration: If clean healthy backup is available, try resolving the issue by restoring backup. It is indeed a good practice to generate backup on regular basis as this will prevent loss of information in such cases. This way, only the most recent work will be lost and the database components from last generated backup can be restored in SQL Server.

Resolution 4: DBCC Execution: If the above mentioned resolution methods does not prove to be helpful, try executing Database Console Commands as they may help in resolving the issue. This helps in checking the inconsistencies; as well as running CHECKDB with recommended clause can result in repair of affected database and incorporated data.

Alternate Solution to Recover B-tree Corruption

When all the given resolutions and techniques fails to recover database as well as rectifying SQL server error 8931, the alternate commercial solution can be used to fix SQL server database from such error. Third party recovery tool eradicates error messages from SQL Server database files and makes them accessible. It also helps in removing SUSPECT mode from the SQL databases and brings them to running mode.

The corrupted MDF as well as NDF files are recovered through advance scanning of these files and deleted data is extracted and restored back to their original formats. Therefore, where manual procedures fails to fix the error and can result in loss of data, this recovery tool helps in removing error messages, corruption as well as recovering deleted SQL data components.

sql recovery banner