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

Troubleshooting Guide: Error 9902 – Full-Text Catalog Low on System Resources

Why This Error Happens

Error 9902 occurs when SQL Server’s Full-Text Engine detects insufficient system resources—typically memory, disk space, or worker threads—to continue populating or crawling a full-text catalog. This is commonly triggered by memory pressure from the MSFTESQL filter daemon host process, low disk space on the volume hosting the catalog files, or an excessive number of concurrent full-text population operations competing for the same resource pool. The pause is a self-protective mechanism, not a corruption, but repeated occurrences usually point to an underlying resource ceiling (memory limits, disk quota, or thread starvation) that needs to be addressed.

Step-by-Step Resolution Guide

Step 1: Check Available Disk Space and Catalog File Location

  • Navigate to the full-text catalog directory, typically under C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\FTData\.
  • Confirm at least 20% free space remains on the drive hosting the catalog; low disk space is a top trigger for reason code 2 in this error.
  • If space is low, move the catalog to a different filegroup/drive using ALTER FULLTEXT CATALOG [CatalogName] REBUILD after relocating via ALTER DATABASE ... MODIFY FILE.

Step 2: Review and Adjust Memory Allocation for Full-Text Engine

  • Open SQL Server Management Studio (SSMS) and run sp_configure 'max server memory (MB)' to verify SQL Server isn’t starved of memory for the MSFTESQL filter host.
  • Check Windows Task Manager or Performance Monitor (perfmon.exe) for memory pressure on sqlservr.exe and fdhost.exe processes.
  • If running on a constrained VM in Windows Server 2025, increase allocated RAM or lower max server memory to leave headroom (recommend at least 2-4 GB free for OS and FTE operations).

Step 3: Reduce Concurrent Population Load

  • Check how many full-text indexes are populating simultaneously using:
  SELECT * FROM sys.dm_fts_index_population;
  • Stagger population jobs instead of running full population on multiple large tables at once.
  • Use ALTER FULLTEXT INDEX ON [TableName] SET CHANGE_TRACKING MANUAL to control when crawls occur, avoiding resource spikes during peak hours.

Step 4: Restart the Full-Text Filter Daemon Host Service

  • Open Services.msc on Windows Server 2025 / Windows 11.
  • Locate SQL Full-text Filter Daemon Launcher (MSSQLSERVER) and restart it.
  • This clears any stuck threads or memory leaks within the fdhost.exe process without requiring a full SQL Server restart.

Step 5: Review SQL Server Error Log for Reason Code Details

  • Open the SQL Server Error Log via SSMS (Management > SQL Server Logs) or the raw file at C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Log\ERRORLOG.
  • Cross-reference the specific “Reason code” number reported in Error 9902 against Microsoft’s documentation to confirm whether it’s memory (1), disk (2), or thread pool (3) related.
  • Apply the targeted fix from Steps 1-4 based on the confirmed reason code.

Alternative or Verification Steps

  • Verify the fix by querying SELECT * FROM sys.dm_fts_index_population; and confirming the status_description shows “In progress” or “Idle” rather than “Paused” for an extended period.
  • If the error persists after resource remediation, rebuild the entire catalog as a last resort: ALTER FULLTEXT CATALOG [CatalogName] REBUILD WITH ACCENT_SENSITIVITY = ON; and monitor the error log during the subsequent crawl.