Troubleshooting Guide: Error 7669 — Full-Text Index Population Blocked by Single-User Access Mode
Why This Error Happens
This warning occurs because the database has been placed into SINGLE_USER access mode, which restricts the connection pool to one single session at a time. SQL Server’s full-text indexing engine (the Filter Daemon Host process, MSSQLFDLauncher) requires its own dedicated background connection to crawl and populate the index, and since the single-user session is already occupied (usually by an administrator’s maintenance connection), the full-text crawler is denied access and change tracking is forcibly stopped. This is not a corruption issue; it is a resource contention/locking issue caused by a restrictive database configuration.
Step-by-Step Resolution Guide
Step 1: Identify Active Connections and Database State
- Open SQL Server Management Studio (SSMS) or Azure Data Studio and connect to the instance.
- Run the following query to check the current state of the database:
SELECT name, user_access_desc, state_desc
FROM sys.databases
WHERE name = 'YourDatabaseName';
- Confirm that
user_access_descreturnsSINGLE_USER.
Step 2: Revert the Database to Multi-User Mode
- Execute the following T-SQL command to restore standard connectivity, which allows the background full-text crawler thread to establish its session:
ALTER DATABASE YourDatabaseName SET MULTI_USER;
- If this command hangs, it likely means another session is actively holding the single-user lock; you may need to kill that specific session ID (SPID) first using
KILL [SPID].
Step 3: Restart the Full-Text Daemon Launcher Service
- On Windows Server 2025 / Windows 11, open the Services management console (
services.msc). - Locate SQL Full-text Filter Daemon Launcher (MSSQLSERVER) (or your specific instance name).
- Right-click and select Restart to clear any hung threads that failed during the single-user lockout.
Step 4: Force a Full Population of the Index
- Since change tracking was stopped during the outage, automatic incremental updates will not resume on their own; you must manually trigger a full crawl.
- Run the following command against the specific table referenced in the error log:
ALTER FULLTEXT INDEX ON YourTableName START FULL POPULATION;
Alternative or Verification Steps
- Verify the Fix: Check the status of the crawl by querying
SELECT FULLTEXTCATALOGPROPERTY('YourCatalogName', 'PopulateStatus');. A return value of0confirms the population is idle and complete (success). - Alternative Fix: If the database refuses to exit single-user mode via standard commands, restart the SQL Server service entirely via PowerShell (
Restart-Service MSSQLSERVER -Force) to clear the session table and reset the access mode to default.