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

Troubleshooting Guide: SQL Server Error 9988 – NEAR Clause Term Limit Exceeded

Why This Error Happens

Error 9988 occurs when a Full-Text Search query uses the NEAR proximity operator with more than 64 search terms, which is a hard-coded architectural limit in the SQL Server Full-Text Engine (including SQL Server 2025). This typically happens when queries are dynamically constructed from user input, large keyword lists, or auto-generated search strings without validation on term count. The limit applies cumulatively across all terms inside the parentheses of the NEAR clause, including synonyms or thesaurus expansions that may inflate the term count unexpectedly.

Step-by-Step Resolution Guide

Step 1: Identify the Offending Query

  • Capture the exact T-SQL query that triggered Error 9988 using SQL Server Profiler, Extended Events, or the application-level error log.
  • Count the number of comma-separated or space-separated terms inside the NEAR() function to confirm it exceeds 64.
  • Check if the query is dynamically generated (e.g., from a search box, API, or ETL job) rather than hardcoded.

Step 2: Refactor the NEAR Clause to Reduce Term Count

  • Split the single NEAR clause into multiple smaller NEAR clauses, each with 64 terms or fewer, and combine them using OR or AND logic.
  • Example restructure:
  SELECT * FROM Documents
  WHERE CONTAINS(Body, 'NEAR((term1, term2, ... term64), 10)')
     OR CONTAINS(Body, 'NEAR((term65, term66, ... term100), 10)')
  • If the terms are generated programmatically, add a validation function in the application layer (C#, PowerShell, or T-SQL) to chunk the term list into batches of 64 before building the query string.

Step 3: Audit Thesaurus and Synonym Expansion

  • Navigate to C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\FTData\ (adjust instance path for SQL Server 2025) and review the tsenu.xml (or relevant language) thesaurus file.
  • Check if synonym expansion is silently adding extra terms to your NEAR clause, pushing it over the 64-term limit even though your original query looked compliant.
  • Disable or trim unnecessary thesaurus expansions for the affected language ID if expansion is the root cause.

Step 4: Update Application-Side Query Builders

  • If using Full-Text Search via Entity Framework, Dapper, or a custom query builder, add a hard limit/validation (if (terms.Count > 64) { ChunkQuery(); }) before the query is sent to SQL Server.
  • Deploy the updated application build to your Windows Server 2025 or Windows 11 client/application tier.

Alternative or Verification Steps

  • Run the refactored query directly in SQL Server Management Studio (SSMS) against the affected database and confirm it executes without Error 9988, then validate result accuracy against the original intended search logic.
  • If chunking NEAR clauses is impractical for your use case, consider switching to CONTAINS with AND/OR logic (without NEAR proximity) for very large term sets, as this operator does not impose the same 64-term restriction.