How to Enable External iFilters in SQL Server 2025

<< Click to Display Table of Contents >>

Navigation:  Troubleshooting and Tech Help > SQL Server Requirements > Prerequisites for using your own SQL server >

How to Enable External iFilters in SQL Server 2025

 
How to Enable External iFilters in SQL Server 2025

In SQL Server 2025, filters are managed through the version-2 full-text component system, and external filters are added or overridden through `version_overrides.json`; PDF is not listed among the default document extensions indexed out of the box.

Reference: https://learn.microsoft.com/en-us/sql/relational-databases/search/view-or-change-registered-filters-and-word-breakers?view=sql-server-ver17#add-or-replace-word-breakers-and-filters

Step 1: Create version_overrides.json

 
Create this file under: C:\Program Files\Microsoft SQL Server\MSSQL17.<instance-name>\MSSQL\FTData

SQL Server 2025 uses `version_overrides.json` to add or replace version-2 full-text filters, and filter mappings are defined in the `doctypes` section.

Use this sample:

{

 "doctypes": {

   ".pdf": [{

     "version": 2,

     "handler": "%SystemRoot%\\system32\\windows.data.pdf.dll",

     "clsid": "6C337B26-3E38-4F98-813B-FBA18BAB64F5"

   }]

 }

}

How to find the CLSID

Use one of these methods to discover the CLSID registered for the PDF filter DLL on the Windows server:

•NirSoft `SearchFilterView.exe`.

•Command line: reg query HKCR\CLSID /s /f windows.data.pdf.dll

•PowerShell (the source PDF contains a truncated command; the text below preserves the incomplete lines):

Get-ChildItem 'Registry::HKEY_CLASSES_ROOT\CLSID' |

ForEach-Object {

   $k = $_.PSPath

   $p = Get-ItemProperty -Path $k -ErrorAction SilentlyContinue

   $inproc = Get-ItemProperty -Path "$k\InprocServer32" -ErrorAction SilentlyConti

   if ($inproc.'(default)' -and $inproc.'(default)' -match 'windows\.data\.pdf\.dll

       [PSCustomObject]@{

           CLSID = Split-Path $k -Leaf

           DLL = $inproc.'(default)'

           Name = $p.'(default)'

       }

   }

}
 

All fields in `version_overrides.json` are mandatory for filter entries except `stemmerClsid`, which applies to word breakers rather than document filters.

Step 2: Load the new filter

Run these commands in SQL Server:

EXEC sp_fulltext_service 'load_os_resources', 1;

EXEC sp_fulltext_service 'restart_all_fdhosts';

EXEC sp_fulltext_service 'update_languages'; -- If new wordbreakers are installed

EXEC sp_fulltext_service 'verify_signature', 0; -- Required for some third-party filters

 

For SQL Server 2025, Microsoft explicitly documents `update_languages` and `restart_all_fdhosts` after adding entries through `version_overrides.json`. The `load_os_resources` workflow is documented by Microsoft for SQL Server 2022 and earlier, not as the primary SQL Server 2025 method for version-2 filter overrides.

Verify registration

Check that the filter is registered correctly: EXEC sp_help_fulltext_system_components 'filter';

Or check the document type directly:

SELECT *

FROM sys.fulltext_document_types

WHERE document_type = '.pdf';

 
Microsoft documents `sp_help_fulltext_system_components 'filter'` as the way to view registered filters, and `sys.fulltext_document_types` is commonly used to confirm that `.pdf` is recognized by the instance.

Step 3: Rebuild and check logs

Rebuild the full-text catalog or the affected full-text indexes after adding the PDF filter. SQL Server 2025 uses new full-text binaries, and Microsoft states that existing full-text indexes should be rebuilt to use the new components.

Then review the SQL full-text log under a path such as:

C:\Program Files\Microsoft SQL Server\MSSQL17.SQL2025\MSSQL\Log

 
Watch for warnings such as: Warning: No appropriate filter was found during full-text index population

If that warning appears, SQL Server still does not have a working filter mapping for `.pdf`, the CLSID is wrong, or the PDF handler cannot be loaded by the full-text daemon host.