|
<< 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.