Upgrade van volledige tekstindexversie

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

In dit artikel wordt de wijziging in de versie van de full-textindex in SQL Server 2025 (17.x) en latere versies beschreven. Hierin worden gedragswijzigingen, vereiste migratiestappen en binaire onderdelen beschreven.

Wijzigingen in de indexversie van volledige tekst in SQL Server 2025

SQL Server 2025 (17.x) verwijdert verouderde woordscheider-, stemmer- en filterbinaire bestanden uit de SQL Server-installatie. Deze onderdelen worden opnieuw opgebouwd met een moderne toolset en bieden uitgebreide ondersteuning voor meer talen en documenttypen. Onderdelen die zijn geïnstalleerd met SQL Server 2025 (17.x) worden versie 2 genoemd. Onderdelen die zijn geïnstalleerd met SQL Server 2022 (16.x) en eerdere versies worden versie 1 genoemd.

Na een in-place-upgrade hebben bestaande volledige-tekstindexen index_version = 1 in sys.fulltext_indexes. Nieuw aangemaakte indexen gebruiken versie 2 en de nieuwe componenten, tenzij u anders aangeeft met de databaseconfiguratie met bereik FULLTEXT_INDEX_VERSION.

Wijzigingen in versie 2-onderdelen

Versie 2-onderdelen voegen taal- en documenttypeondersteuning toe, gebruiken een nieuw aanpassingsmodel en kunnen verschillende tokenisatieresultaten retourneren dan versie 1-onderdelen.

Ondersteuning voor nieuwe talen

SQL Server 2025 (17.x) voegt ondersteuning toe voor indexering in volledige tekst in drie nieuwe talen:

  • Fins (LCID 1035)
  • Hongaars (LCID 1038)
  • Estisch (LCID 1061)

Ondersteuning voor nieuwe documenttypen

SQL Server 2025 (17.x) voegt standaard ondersteuning toe voor het indexeren van de volgende documentextensies.

Filter 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

Onverwachte resultaten

Nieuwe onderdelen in SQL Server 2025 (17.x) kunnen onverwachte resultaten opleveren voor toepassingen. Denk bijvoorbeeld aan de Engelse woordonderbreker (LCID 1033):

Termijn Resultaten met de vorige woordonderbreker Resultaten met nieuwe woordonderbreker
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

Aanpassingsmodel

Versie 2 indexen voor volledige tekst lezen geen componenthandlers meer uit het Windows register. U bepaalt de aanpassing via een exemplaarspecifiek JSON-bestand. Zie Filters en woordonderbrekers aanpassen voor meer informatie.

Opties voor upgrades en migratie

Omdat SQL Server 2025 (17.x) alle binaire bestanden van versie 1 verwijdert, mislukken volledige tekstquery's en populaties die gebruikmaken van indexen van versie 1 na een in-place upgrade. Zie Belangrijke wijzigingen in database-enginefuncties in SQL Server 2025 voor meer informatie.

Gebruik een van de volgende methoden na een upgrade naar SQL Server 2025 (17.x) of nieuwere versies, of wanneer u indexen van versie 1 voorbereidt op afschaffing in Azure SQL Database en Azure SQL Managed Instance.

Indexen van versie 1 zoeken

Voer de volgende query uit in elke database die gebruikmaakt van Full-Text Zoeken om indexen te vinden die nog steeds versie 1-onderdelen gebruiken:

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;

Bestaande indexen herbouwen met versie 2-onderdelen

Bouw bestaande volledige-tekstindexen opnieuw om versie 2-onderdelen te gebruiken. Controleer of dit FULLTEXT_INDEX_VERSION is ingesteld op 2en bouw vervolgens catalogussen met volledige tekst opnieuw.

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

Note

Met een catalogus herbouwbewerking worden alle volledige-tekstindexen opnieuw opgebouwd. Als u de volgorde van de indexbuild wilt beheren of de resourcevereisten wilt verminderen, kunt u de indexen in volledige tekst afzonderlijk verwijderen en opnieuw maken .

Onderdelen van versie 1 blijven gebruiken

Gebruik deze optie alleen voor SQL Server exemplaren waar u bestanden in de SQL Server-installatie kunt beheren.

Important

Versie 1 is afgeschaft voor SQL Server in Linux. In SQL Server 2025 (17.x) en latere versies bevat het mssql-server-fts pakket geen binaire bestanden van versie 1. Het installeren van niet-overeenkomende versies van de mssql-server-fts en mssql-server pakketten wordt niet ondersteund en resulteert in fouten in volledige tekst.

Als u vanwege toepassingscompatibiliteit versie 1 moet blijven gebruiken, stel FULLTEXT_INDEX_VERSION = 1 dan in om een onbedoelde upgrade naar versie 2 bij het opnieuw bouwen te voorkomen.

ALTER DATABASE SCOPED CONFIGURATION
    SET FULLTEXT_INDEX_VERSION = 1;

Kopieer vervolgens de oude woordafbreker-, stemmer- en filterbinaire bestanden uit de map Binn van een oudere instantie naar de map Binn van de doelinstantie. Zie binaire bestanden voor volledige-tekstfilters en binaire bestanden voor volledige-tekst woordafbreking en stemming voor informatie over welke DLL's en afhankelijke bibliotheken u per taal of documenttype moet kopiëren.

Als u de volledige set binaire bestanden van versie 1 bulksgewijs wilt kopiëren, kopieert u het volgende script naar een bestand met de naam 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)."

Voer het script uit in een PowerShell-beheervenster. Dit SourceBinn is het pad naar de Binn map van een SQL Server 2022 (16.x) of een eerdere instantie met binaire versie 1-bestanden. TargetBinn Dit is het pad naar de Binn map van een SQL Server 2025 (17.x) of hoger waarvoor ondersteuning van versie 1 is vereist.

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

Tijdlijn voor status en afschaffing van versie 1 per omgeving

Milieu Status Vereiste actie
SQL Server 2025 (17.x) en latere versies Binaire bestanden van versie 1 worden verwijderd uit de SQL Server installatie. Query's en populaties van versie 1 mislukken na een in-place upgrade. Bouw volledige-tekstindexen opnieuw of maak deze opnieuw met versie 2-onderdelen. Als u versie 1 voor compatibiliteit nodig hebt, gebruikt u versie 1 alleen als dit wordt ondersteund.
Azure SQL Managed Instance in het kader van het updatebeleid van SQL Server 2025 Afschaffing van versie 1 bevindt zich in gefaseerde implementatie. Betrokken klanten ontvangen periodieke e-mailherinneringen voordat ze worden afgeschaft. Herbouw of maak full-textindexen opnieuw aan met onderdelen van versie 2 voordat uw instantie wordt beïnvloed. Als u niet direct kunt upgraden, neemt u contact op met Microsoft ondersteuning.
Azure SQL Database en Azure SQL Managed Instance met het updatebeleid 'Altijd up-to-date' Indexen van versie 1 worden nog steeds ondersteund, maar verwijdering is gepland. Nieuw gemaakte of opnieuw opgebouwde indexen worden standaard ingesteld op het gebruik van versie 2. Maak een inventaris van indexen van versie 1 en plan rebuilds van tevoren met onderdelen van versie 2 om uitvaltijd te minimaliseren.

tijdlijn voor Azure SQL afschaffing

van toepassing op: Azure SQL Database en Azure SQL Managed Instance

Azure SQL Database en Azure SQL Managed Instance nog geen binaire bestanden van versie 1 verwijderen. Deze aanbiedingen ondergaan een gefaseerde afschaffing om tijd te bieden voor het herbouwen van bestaande indexen, te beginnen met Azure SQL Managed Instance op het updatebeleid van SQL Server 2025. Betrokken klanten ontvangen voorafgaand aan de uitfasering periodieke e-mailherinneringen.

Nadat versie 1 is afgeschaft, mislukken query's op indexen van versie 1 met het foutbericht:

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.

En populaties mislukken met de volgende foutmeldingen in het crawl-logboek:

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.