Aktualizace verze fulltextového indexu

platí pro: SQL Server Azure SQL DatabaseAzure SQL Managed Instance

Tento článek popisuje změnu verze fulltextového indexu v SQL Server 2025 (17.x) a novějších verzích. Řeší změny chování, požadované kroky migrace a binární soubory nových komponent.

Změny verze fulltextového indexu v SQL Server 2025

SQL Server 2025 (17.x) odstraňuje z instalace SQL Server zastaralé binární soubory modulu word breaker, stemmeru a filtru. Tyto komponenty jsou znovu sestaveny pomocí moderní sady nástrojů a nabízejí rozšířenou podporu pro více jazyků a typů dokumentů. Komponenty nainstalované s SQL Server 2025 (17.x) se nazývají verze 2. Komponenty nainstalované s SQL Server 2022 (16.x) a staršími verzemi se nazývají verze 1.

Po upgradu na místě mají existující fulltextové indexy hodnotu index_version = 1 v sys.fulltext_indexes. Nově vytvořené indexy používají verzi 2 a nové komponenty, pokud neurčíte jinak pomocí konfigurace s oborem databáze FULLTEXT_INDEX_VERSION .

Změny součástí verze 2

Komponenty verze 2 přidávají podporu jazyka a typu dokumentu, používají nový model přizpůsobení a můžou vracet různé výsledky tokenizace než součásti verze 1.

Podpora pro nové jazyky

SQL Server 2025 (17.x) přidává podporu fulltextového indexování ve třech nových jazycích:

  • Finština (LCID 1035)
  • Maďarština (LCID 1038)
  • Estonština (LCID 1061)

Podpora nových typů dokumentů

SQL Server 2025 (17.x) ve výchozím nastavení přidává podporu indexování následujících rozšíření dokumentů.

Filtr Extension
msgfilt02.dll .msg
odffilt02.dll .odp, .ods, .odt
offfilt02.dll .doc, .dot, , .obd, .obt.pot, , .pps.ppt, .xlb, , .xlc.xls.xlt
offfiltx02.dll .docm, .docx, .dotx, .pptm, .pptx, .xlsb, .xlsm, .xlsx, .zip
onfilter02.dll .one

Neočekávané výsledky

Nové komponenty v SQL Serveru 2025 (17.x) můžou vrátit do aplikací neočekávané výsledky. Představte si například dělení slov v angličtině (LCID 1033):

Termín Výsledky s předchozí děličkou slov Výsledky s novým oddělovačem slov
cat_dog cat_dog cat_dog
cat
dog
$100 $100
nn100usd
\$100
nn100\$
2026-01-09 2026-01-09
2026
nn2026
01
09
2026-01-09
dd20260109
2026
01
09

Model přizpůsobení

Fulltextové indexy verze 2 už nečtou obslužné rutiny komponent z registru Windows. Přizpůsobení můžete řídit prostřednictvím souboru JSON specifického pro instanci. Další informace naleznete v tématu Přizpůsobení filtrů a dělení slov.

Možnosti upgradu a migrace

Vzhledem k tomu, že SQL Server 2025 (17.x) odebere všechny binární soubory verze 1, plně textové dotazy a populace, které používají indexy verze 1, selžou po místní upgradu. Další informace najdete v tématu Závažné změny funkcí databázového stroje v SQL Server 2025.

Po upgradu na SQL Server 2025 (17.x) nebo novějších verzích použijte jeden z následujících přístupů nebo při přípravě indexů verze 1 pro vyřazení Azure SQL Database a Azure SQL Managed Instance.

Vyhledání indexů verze 1

V každé databázi, která používá Full-Text Search, spusťte následující dotaz a vyhledejte indexy, které stále používají komponenty verze 1:

SELECT fc.[name] AS catalog_name,
       OBJECT_SCHEMA_NAME(fi.object_id) AS schema_name,
       OBJECT_NAME(fi.object_id) AS table_name,
       fi.object_id,
       fi.*
FROM sys.fulltext_indexes AS fi
     INNER JOIN sys.fulltext_catalogs AS fc
         ON fi.fulltext_catalog_id = fc.fulltext_catalog_id
WHERE fi.index_version = 1;

Opětovné sestavení existujících indexů s komponentami verze 2

Znovu sestavte existující fulltextové indexy tak, aby používaly součásti verze 2. Ověřte, že FULLTEXT_INDEX_VERSION je nastavena na 2, a potom znovu sestavte fulltextové katalogy.

SELECT *
FROM sys.database_scoped_configurations
WHERE [name] = 'FULLTEXT_INDEX_VERSION';
ALTER FULLTEXT CATALOG [FtCatalog] REBUILD;

Note

Operace opětovného sestavení katalogu znovu sestaví všechny fulltextové indexy. Pokud chcete řídit pořadí sestavení indexu nebo snížit požadavky na prostředky, odstraňte a znovu vytvořte fulltextové indexy jednotlivě.

Pokračujte v používání komponent verze 1

Tuto možnost použijte pouze pro SQL Server instance, ve kterých můžete spravovat soubory v instalaci SQL Server.

Important

Verze 1 je pro SQL Server v Linuxu zastaralá. V SYSTÉMU SQL Server 2025 (17.x) a novějších verzích mssql-server-fts balíček neobsahuje binární soubory verze 1. Pokus o instalaci neslučitelných verzí mssql-server-fts a mssql-server balíčků není podporován a výsledkem jsou celkové chyby.

Pokud potřebujete zůstat ve verzi 1 kvůli kompatibilitě aplikací, nastavte FULLTEXT_INDEX_VERSION = 1 , aby se při opětovném sestavení zabránilo neúmyslnému upgradu na verzi 2.

ALTER DATABASE SCOPED CONFIGURATION
    SET FULLTEXT_INDEX_VERSION = 1;

V dalším kroku zkopírujte starší binární soubory modulu pro dělení slov, stemmeru a filtru ze složky starší instance Binn do složky cílové instance Binn. Přehled toho, které soubory DLL a závislé knihovny je třeba zkopírovat pro jednotlivé jazyky nebo typy dokumentů, najdete v tématech Binární soubory fulltextového filtru a Binární soubory fulltextového děliče slov a stemmeru.

Chcete-li hromadně zkopírovat úplnou sadu binárních souborů verze 1, zkopírujte následující skript do souboru s názvem Copy-FulltextV1Components.ps1.

<#
.SYNOPSIS
    Copies the Full-Text V1 components from one SQL install's Binn folder to another.
    Existing files are never overwritten; each file reports OK, SKIP or FAIL.

.EXAMPLE
    .\Copy-FulltextV1Components.ps1 `
        -SourceBinn 'C:\Program Files\Microsoft SQL Server\MSSQL16.INST1\MSSQL\Binn' `
        -TargetBinn 'C:\Program Files\Microsoft SQL Server\MSSQL17.INST2\MSSQL\Binn'
#>
param(
    [Parameter(Mandatory)] [string] $SourceBinn,
    [Parameter(Mandatory)] [string] $TargetBinn
)

$components = @(
    'infosoft.dll',
    'LangWrbk.dll',
    'korwbrkr.dll',
    'korwbrkr.lex',
    'msfte.dll',
    'xmlfilt.dll',
    'MsWb7.dll',
    'MsWb70011.dll',
    'MsWb7001e.dll',
    'MsWb70404.dll',
    'MsWb70804.dll',
    'NaturalLanguage6.dll',
    'NL7Data0011.dll',
    'NL7Data001e.dll',
    'NL7Data0404.dll',
    'NL7Data0804.dll',
    'NL7Lexicons0011.dll',
    'NL7Lexicons001e.dll',
    'NL7Lexicons0404.dll',
    'NL7Lexicons0804.dll',
    'NL7Models0011.dll',
    'NL7Models001e.dll',
    'NL7Models0404.dll',
    'NL7Models0804.dll',
    'nlhtml.dll',
    'nls400.dll',
    'NlsData0000.dll',
    'NlsData0002.dll',
    'NlsData0003.dll',
    'NlsData000a.dll',
    'NlsData000c.dll',
    'NlsData000d.dll',
    'NlsData000f.dll',
    'NlsData0010.dll',
    'NlsData0018.dll',
    'NlsData001a.dll',
    'NlsData001b.dll',
    'NlsData001D.dll',
    'NlsData0020.dll',
    'NlsData0021.dll',
    'NlsData0022.dll',
    'NlsData0024.dll',
    'NlsData0026.dll',
    'NlsData0027.dll',
    'NlsData002a.dll',
    'NlsData0039.dll',
    'NlsData003e.dll',
    'NlsData0045.dll',
    'NlsData0046.dll',
    'NlsData0047.dll',
    'NlsData0049.dll',
    'NlsData004a.dll',
    'NlsData004b.dll',
    'NlsData004c.dll',
    'NlsData004e.dll',
    'NlsData0414.dll',
    'NlsData0416.dll',
    'NlsData0816.dll',
    'NlsData081a.dll',
    'NlsData0c1a.dll',
    'Nlsdl.dll',
    'NlsLexicons0002.dll',
    'NlsLexicons0003.dll',
    'NlsLexicons000a.dll',
    'NlsLexicons000c.dll',
    'NlsLexicons000d.dll',
    'NlsLexicons000f.dll',
    'NlsLexicons0010.dll',
    'NlsLexicons0018.dll',
    'NlsLexicons001a.dll',
    'NlsLexicons001b.dll',
    'NlsLexicons001D.dll',
    'NlsLexicons0020.dll',
    'NlsLexicons0021.dll',
    'NlsLexicons0022.dll',
    'NlsLexicons0024.dll',
    'NlsLexicons0026.dll',
    'NlsLexicons0027.dll',
    'NlsLexicons002a.dll',
    'NlsLexicons0039.dll',
    'NlsLexicons003e.dll',
    'NlsLexicons0045.dll',
    'NlsLexicons0046.dll',
    'NlsLexicons0047.dll',
    'NlsLexicons0049.dll',
    'NlsLexicons004a.dll',
    'NlsLexicons004b.dll',
    'NlsLexicons004c.dll',
    'NlsLexicons004e.dll',
    'NlsLexicons0414.dll',
    'NlsLexicons0416.dll',
    'NlsLexicons0816.dll',
    'NlsLexicons081a.dll',
    'NlsLexicons0c1a.dll',
    'Prm0001.bin',
    'Prm0005.bin',
    'Prm0006.bin',
    'Prm0007.bin',
    'Prm0008.bin',
    'Prm0009.bin',
    'Prm0013.bin',
    'Prm0015.bin',
    'Prm0019.bin',
    'Prm001f.bin'
)

if (-not (Test-Path -LiteralPath $SourceBinn -PathType Container)) { throw "Source Binn folder not found: $SourceBinn" }
if (-not (Test-Path -LiteralPath $TargetBinn -PathType Container)) { throw "Target Binn folder not found: $TargetBinn" }

if ((Split-Path -Leaf $SourceBinn) -ne 'Binn') { throw "Source path must be a Binn folder: $SourceBinn" }
if ((Split-Path -Leaf $TargetBinn) -ne 'Binn') { throw "Target path must be a Binn folder: $TargetBinn" }

$ok = 0; $skip = 0; $fail = 0
foreach ($name in $components) {
    $srcFile = Join-Path $SourceBinn $name
    $dstFile = Join-Path $TargetBinn $name

    if (-not (Test-Path -LiteralPath $srcFile)) {
        Write-Host "[FAIL] $name (source not found)" -ForegroundColor Red
        $fail++
    }
    elseif (Test-Path -LiteralPath $dstFile) {
        Write-Warning "[SKIP] $name already exists in target; not overwritten"
        $skip++
    }
    else {
        try {
            Copy-Item -LiteralPath $srcFile -Destination $dstFile -ErrorAction Stop
            Write-Host "[ OK ] $name" -ForegroundColor Green
            $ok++
        }
        catch {
            Write-Host "[FAIL] $name ($($_.Exception.Message))" -ForegroundColor Red
            $fail++
        }
    }
}

Write-Host ""
Write-Host "Copied $ok, skipped $skip, failed $fail of $($components.Count)."

Spusťte skript v okně PowerShellu pro správce, kde SourceBinn je cesta ke složce SQL Server 2022 (16.x) nebo starší instance obsahující binární soubory verze 1 a Binn je cesta ke TargetBinnBinn složce SQL Server 2025 (17.x) nebo novější instance, která vyžaduje trvalou podporu verze 1.

.\Copy-FulltextV1Components.ps1 `
    -SourceBinn 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Binn' `
    -TargetBinn 'C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Binn'

Stav verze 1 a časová osa vyřazení podle prostředí

Životní prostředí Status Vyžaduje se akce
SQL Server 2025 (17.x) a novější verze Binární soubory verze 1 se odeberou z instalace SQL Server. Po upgradu na místě selhávají dotazy a populace verze 1. Znovu sestavte nebo znovu vytvořte fulltextové indexy s komponentami verze 2. Pokud k zajištění kompatibility potřebujete verzi 1, použijte verzi 1, pouze pokud je podporovaná.
Azure SQL Managed Instance v rámci zásad aktualizací SQL Serveru 2025 Ukončení podpory verze 1 probíhá postupně. Ovlivnění zákazníci dostanou pravidelné e-mailové připomenutí před vyřazením. Znovu sestavte nebo znovu vytvořte fulltextové indexy s komponentami verze 2 dříve, než bude vaše instance ovlivněna. Pokud nemůžete provést upgrade okamžitě, obraťte se na podporu Microsoft.
Azure SQL Database a Azure SQL Managed Instance v rámci zásady aktualizací „Always-up-to-date“ Indexy verze 1 jsou stále podporovány dnes, ale odebrání je plánováno. Nově vytvořené nebo znovu vytvořené indexy se začnou používat ve výchozím nastavení verze 2. Předem vytvořte indexy inventáře verze 1 a naplánujte přebudování pomocí komponent verze 2, abyste minimalizovali prostoje.

Harmonogram vyřazení Azure SQL

platí pro: Azure SQL Database a Azure SQL Managed Instance

Azure SQL Database a Azure SQL Managed Instance ještě neodeberou binární soubory verze 1. Tyto nabídky procházejí fázovaným vyřazením, aby bylo možné znovu sestavit existující indexy, počínaje Azure SQL Managed Instance v zásadách aktualizace SQL Server 2025. Ovlivnění zákazníci dostanou pravidelné e-mailové připomenutí před vyřazením.

Po ukončení podpory verze 1 dotazy na indexy verze 1 selžou s chybovým hlášením:

Msg 30011, Level 16, State 1, Line 37
Full-text index version 1 is not supported by this instance configuration. Rebuild or recreate the index with database scoped configuration FULLTEXT_INDEX_VERSION = 2. For more information, see https://aka.ms/fts-version-upgrade. If unable to upgrade, contact support for assistance.

A populace selžou s následujícími chybami v protokolu procházení:

Error: 30011, Severity: 16, State: 1.
Full-text index version 1 is not supported by this instance configuration. Rebuild or recreate the index with database scoped configuration FULLTEXT_INDEX_VERSION = 2. For more information, see https://aka.ms/fts-version-upgrade. If unable to upgrade, contact support for assistance.

Error: 30059, Severity: 16, State: 1.
A fatal error occurred during a full-text population and caused the population to be cancelled. Population type is: <population_type>; database name is <database_name> (id: <database_id>); catalog name is <catalog_name> (id: <catalog_id>); table name <table_name> (id: <table_id>). Fix the errors that are logged in the full-text crawl log. Then, resume the population. The basic Transact-SQL syntax for this is: ALTER FULLTEXT INDEX ON table_name RESUME POPULATION.