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

Troubleshooting Guide: Error 9960 – “View is not an indexed view” in SQL Server 2025

Why This Error Happens

This error occurs when you attempt to create a full-text index on a view that does not have a unique clustered index, which is the technical requirement for a view to be classified as an “indexed view” in SQL Server. Full-text indexing engines require a deterministic, unique key structure to track rows, and standard (non-indexed) views lack the materialized storage and unique clustered index needed to support this. Essentially, SQL Server is rejecting the request because the view is still just a virtual query definition rather than a physically materialized object with a unique identifier.

Step-by-Step Resolution Guide

Step 1: Verify the View’s Current Index Status

  • Open SQL Server Management Studio (SSMS) and connect to your SQL Server 2025 instance.
  • Run the following query to check for existing indexes on the view:
  SELECT i.name, i.type_desc, i.is_unique 
  FROM sys.indexes i 
  JOIN sys.views v ON i.object_id = v.object_id 
  WHERE v.name = 'YourViewName';
  • If this returns zero rows, the view currently has no indexes at all, confirming it is a standard view.

Step 2: Create a Unique Clustered Index on the View

  • Ensure the view was created using the WITH SCHEMABINDING option. If not, you must ALTER or DROP/CREATE the view to include it:
  ALTER VIEW dbo.YourViewName WITH SCHEMABINDING AS
  SELECT ... 
  FROM dbo.BaseTable
  • Create the required unique clustered index to materialize the view:
  CREATE UNIQUE CLUSTERED INDEX IX_YourView_Unique 
  ON dbo.YourViewName (YourUniqueColumn);
  • This step physically converts the standard view into a true “Indexed View,” satisfying the prerequisite for full-text indexing.

Step 3: Re-attempt the Full-Text Index Creation

  • Navigate to Object Explorer > Databases > Your Database > Views > YourViewName > Full-Text Index in SSMS.
  • Alternatively, run the T-SQL command directly:
  CREATE FULLTEXT INDEX ON dbo.YourViewName(YourTextColumn)
  KEY INDEX IX_YourView_Unique
  ON YourFullTextCatalog;
  • The command should now execute successfully since the view satisfies the “indexed view” requirement.

Step 4: Check Windows Server 2025 Full-Text Filter Daemon

  • Open the Services console (services.msc) on your Windows Server 2025 host.
  • Ensure the SQL Full-text Filter Daemon Launcher (MSSQLSERVER) service is running, as a stalled daemon can sometimes cause the engine to misreport index eligibility.

Alternative or Verification Steps

  • Verify the Fix: Run SELECT * FROM sys.fulltext_indexes WHERE object_id = OBJECT_ID('dbo.YourViewName'); to confirm the full-text index is now registered in the system catalog.
  • Alternative Solution: If schema binding is not feasible due to underlying table dependencies, consider creating the full-text index directly on the base table instead of the view, and use a JOIN in your queries to retrieve the search-ranked results alongside the view’s other columns.