Peningkatan versi indeks teks lengkap

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Artikel ini menjelaskan perubahan versi indeks teks lengkap di SQL Server 2025 (17.x) dan versi yang lebih baru. Ini mencakup perubahan perilaku, langkah-langkah migrasi yang diperlukan, dan biner komponen baru.

Perubahan versi indeks teks lengkap di SQL Server 2025

SQL Server 2025 (17.x) menghapus file biner pemecah kata, stemmer, dan filter versi lama dari instalasi SQL Server. Komponen-komponen ini dibangun kembali dengan set alat modern dan menawarkan dukungan yang diperluas untuk lebih banyak bahasa dan jenis dokumen. Komponen yang diinstal dengan SQL Server 2025 (17.x) disebut versi 2. Komponen yang diinstal dengan SQL Server 2022 (16.x) dan versi yang lebih lama disebut versi 1.

Setelah peningkatan di tempat, indeks teks lengkap yang ada memiliki index_version = 1 di sys.fulltext_indexes. Indeks yang baru dibuat menggunakan versi 2 dan komponen baru, kecuali Anda menentukan sebaliknya dengan menggunakan konfigurasi cakupan database FULLTEXT_INDEX_VERSION .

Perubahan komponen versi 2

Komponen versi 2 menambahkan dukungan bahasa dan jenis dokumen, menggunakan model kustomisasi baru, dan dapat mengembalikan hasil tokenisasi yang berbeda dari komponen versi 1.

Dukungan untuk bahasa baru

SQL Server 2025 (17.x) menambahkan dukungan untuk pengindeksan teks lengkap dalam tiga bahasa baru:

  • Finlandia (LCID 1035)
  • Hongaria (LCID 1038)
  • Estonia (LCID 1061)

Dukungan untuk jenis dokumen baru

SQL Server 2025 (17.x) menambahkan dukungan untuk mengindeks ekstensi dokumen berikut secara default.

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

Hasil tidak terduga

Komponen baru di SQL Server 2025 (17.x) mungkin mengembalikan hasil yang tidak terduga ke aplikasi. Misalnya, pertimbangkan pemecah kata bahasa Inggris (LCID 1033):

Istilah Hasil dengan pemecah kata sebelumnya Hasil dengan pemecah kata baru
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 kustomisasi

Indeks teks lengkap versi 2 tidak lagi membaca handler komponen dari registri Windows. Anda mengontrol kustomisasi melalui file JSON khusus instans. Untuk informasi selengkapnya, lihat Mengkustomisasi filter dan pemecah kata.

Opsi peningkatan dan migrasi

Karena SQL Server 2025 (17.x) menghapus semua biner versi 1, kueri teks lengkap dan populasi yang menggunakan indeks versi 1 gagal setelah upgrade in-place. Untuk informasi selengkapnya, lihat Perubahan signifikan pada fitur Mesin Basis Data di SQL Server 2025.

Gunakan salah satu pendekatan berikut setelah meningkatkan ke SQL Server 2025 (17.x) atau versi yang lebih baru, atau saat menyiapkan indeks versi 1 untuk penghentian di Azure SQL Database dan Azure SQL Managed Instance.

Menemukan indeks versi 1

Jalankan kueri berikut di setiap database yang menggunakan pencarian Full-Text untuk menemukan indeks yang masih menggunakan komponen versi 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;

Membangun kembali indeks yang ada dengan komponen versi 2

Bangun kembali indeks teks lengkap yang ada untuk menggunakan komponen versi 2. Verifikasi bahwa FULLTEXT_INDEX_VERSION diatur ke 2, lalu bangun kembali katalog teks lengkap.

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

Note

Operasi pembangunan ulang katalog membangun kembali semua indeks teks lengkap. Jika Anda ingin mengontrol urutan build indeks, atau mengurangi persyaratan sumber daya, hilangkan dan buat ulang indeks teks lengkap satu per satu.

Tetap gunakan komponen versi 1

Gunakan opsi ini hanya untuk instans SQL Server tempat Anda dapat mengelola file dalam penginstalan SQL Server.

Important

Versi 1 tidak digunakan lagi untuk SQL Server di Linux. Di SQL Server 2025 (17.x) dan versi yang lebih baru, mssql-server-fts paket tidak menyertakan biner versi 1. Mencoba menginstal paket mssql-server-fts dan mssql-server dengan versi yang tidak cocok tidak didukung, dan akan menghasilkan kegagalan teks penuh.

Jika Anda harus tetap menggunakan versi 1 untuk kompatibilitas aplikasi, atur FULLTEXT_INDEX_VERSION = 1 untuk menghindari peningkatan yang tidak diinginkan ke versi 2 selama pembangunan ulang.

ALTER DATABASE SCOPED CONFIGURATION
    SET FULLTEXT_INDEX_VERSION = 1;

Selanjutnya, salin biner pemecah kata, stemmer, dan filter versi lama dari folder Binn milik instans yang lebih lama ke folder Binn milik instans target. Untuk referensi DLL dan pustaka dependen mana yang perlu Anda salin per bahasa atau jenis dokumen, lihat Biner filter teks lengkap dan Pemecah kata teks lengkap dan biner stemmer.

Untuk menyalin kumpulan lengkap biner versi 1 secara massal, salin skrip berikut ke file bernama 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)."

Jalankan skrip di jendela Admin PowerShell, di mana SourceBinn adalah jalur ke Binn folder SQL Server 2022 (16.x) atau instans sebelumnya yang berisi biner versi 1, dan TargetBinn merupakan jalur ke Binn folder SQL Server 2025 (17.x) atau yang lebih baru yang memerlukan dukungan versi 1 berkelanjutan.

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

Status versi 1 dan garis waktu penghentian menurut lingkungan

Lingkungan Status Tindakan Diperlukan
SQL Server 2025 (17.x) dan versi yang lebih baru Biner versi 1 dihapus dari penginstalan SQL Server. Kueri dan populasi versi 1 gagal setelah pemutakhiran di tempat. Membangun kembali atau membuat ulang indeks teks lengkap dengan komponen versi 2. Jika Anda memerlukan versi 1 untuk kompatibilitas, gunakan versi 1 hanya jika didukung.
Azure SQL Managed Instance pada kebijakan pembaruan SQL Server 2025 Penghentian penggunaan Versi 1 sedang diluncurkan secara bertahap. Pelanggan yang terdampak menerima pengingat berkala melalui email sebelum penghentian penggunaan. Bangun ulang atau buat ulang indeks teks lengkap dengan komponen versi 2 sebelum instans Anda terpengaruh. Jika Anda tidak dapat segera meningkatkan, hubungi dukungan Microsoft.
Azure SQL Database dan Azure SQL Managed Instance dengan kebijakan pembaruan "Always-up-to-date" Indeks versi 1 masih didukung hari ini, tetapi penghapusan direncanakan. Indeks yang baru dibuat atau dibangun kembali akan mulai default menggunakan versi 2. Inventaris versi 1 mengindeks dan merencanakan pembangunan ulang lebih awal dengan komponen versi 2 untuk meminimalkan waktu henti.

garis waktu penghentian Azure SQL

Berlaku untuk: Azure SQL Database dan Azure SQL Managed Instance

Azure SQL Database dan Azure SQL Managed Instance belum menghapus biner versi 1. Penawaran ini mengalami penghentian bertahap untuk memungkinkan waktu untuk membangun kembali indeks yang ada, dimulai dengan Azure SQL Managed Instance pada kebijakan pembaruan SQL Server 2025. Pelanggan yang terpengaruh menerima pengingat email berkala sebelum penghentian.

Setelah versi 1 tidak digunakan lagi, kueri pada indeks versi 1 gagal dengan pesan kesalahan:

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.

Dan populasi gagal dengan kesalahan berikut dalam log perayapan:

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.