How to fix Error 8975 on Windows Server 2025 / Windows 11

Troubleshooting Guide: DBCC Error 8975 – Cross-Rowset Check Failure

Why This Error Happens

Error 8975 occurs when DBCC CHECKDB (or CHECKTABLE) runs an internal query against system metadata to validate relationships between rowsets, and that internal query fails unexpectedly, often due to resource exhaustion, tempdb contention, or underlying index/page corruption. This can also surface when the SQL Server Query Processor encounters a schema inconsistency between a table and its related indexes or statistics objects during the consistency check. In many cases, the root cause is insufficient tempdb space, memory pressure, or actual physical corruption in the object being scanned, which prevents the internal validation query from completing successfully.

Step-by-Step Resolution Guide

Step 1: Review the Full Error Context and SQL Server Error Log

  • Open SQL Server Management Studio (SSMS) and check the SQL Server Error Log (Management > SQL Server Logs) for the full text accompanying Error 8975, including the internal query error number (%d).
  • Cross-reference the internal error number against Microsoft’s error code documentation to identify if it points to a resource issue (e.g., 1101/1105 – out of space) or a corruption-specific error (e.g., 605, 823, 824).
  • Note the Object ID and resolve it to an object name using: SELECT OBJECT_NAME(object_id) FROM sys.objects WHERE object_id = <ID>;

Step 2: Verify and Expand TempDB Capacity

  • DBCC CHECKDB relies heavily on tempdb for internal worktables during cross-rowset validation; insufficient space is a leading cause of this failure.
  • Navigate to SQL Server Configuration Manager > SQL Server Services, confirm the instance is running, then check tempdb file sizes via: SELECT name, size*8/1024 AS SizeMB FROM tempdb.sys.database_files;
  • On Windows Server 2025, ensure the drive hosting tempdb has at least 20-30% free space, and manually expand the tempdb data/log files using ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, SIZE = 5120MB);

Step 3: Run DBCC CHECKDB with Data Purity and Extended Logic

  • Execute a targeted check against the specific object to isolate the failure: DBCC CHECKTABLE ('YourTableName') WITH DATA_PURITY, ALL_ERRORMSGS, NO_INFOMSGS;
  • If the error persists, run a full database check with extended logical checks: DBCC CHECKDB ('YourDatabaseName') WITH EXTENDED_LOGICAL_CHECKS, DATA_PURITY;
  • Monitor Windows Server 2025 Resource Monitor during the scan to rule out memory starvation (Page Life Expectancy dropping sharply) as the cause of the internal query timeout.

Step 4: Rebuild Indexes on the Affected Object

  • If the error correlates to a specific Object ID rather than a system-wide tempdb issue, the non-clustered indexes on that table may be desynced from the clustered index/heap.
  • Rebuild all indexes on the affected table to force a resynchronization of the rowsets: ALTER INDEX ALL ON YourTableName REBUILD WITH (ONLINE = ON, SORT_IN_TEMPDB = ON);
  • If rebuilding fails due to corruption, proceed to restore the specific table/filegroup from the last known good backup rather than risking data loss via REPAIR_ALLOW_DATA_LOSS.

Alternative or Verification Steps

  • Verification: Re-run DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS; immediately after the fix; a clean return with “0 allocation errors and 0 consistency errors” confirms resolution.
  • Alternative: If the error returns immediately after a rebuild, treat this as a sign of physical disk corruption—run chkdsk /f /r on the underlying Windows Server 2025 volume and restore the database from backup if the hardware check fails.