Tam metin dizini sürüm yükseltmesi

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Bu makalede, SQL Server 2025 (17.x) ve sonraki sürümlerde tam metin dizini sürümü değişikliği açıklanmaktadır. Davranış değişikliklerini, gerekli geçiş adımlarını ve yeni bileşen ikili dosyalarını kapsar.

SQL Server 2025'te tam metin dizini sürümü değişiklikleri

SQL Server 2025 (17.x), eski sözcük ayırıcı, kök bulucu ve filtre ikili dosyalarını SQL Server kurulumundan kaldırır. Bu bileşenler modern bir araç takımıyla yeniden oluşturulur ve daha fazla dil ve belge türü için genişletilmiş destek sunar. SQL Server 2025 (17.x) ile yüklenen bileşenler sürüm 2 olarak adlandırılır. SQL Server 2022 (16.x) ve önceki sürümlerle yüklenen bileşenler sürüm 1 olarak adlandırılır.

Yerinde yükseltmeden sonra, mevcut tam metin dizinleri index_version = 1 içinde değerine sahiptir. Yeni oluşturulan dizinler , FULLTEXT_INDEX_VERSION veritabanı kapsamlı yapılandırmasını kullanarak aksini belirtmediğiniz sürece sürüm 2'yi ve yeni bileşenleri kullanır.

Sürüm 2 bileşen değişiklikleri

Sürüm 2 bileşenleri dil ve belge türü desteği ekler, yeni bir özelleştirme modeli kullanır ve sürüm 1 bileşenlerinden farklı belirteçleştirme sonuçları döndürebilir.

Yeni diller için destek

SQL Server 2025 (17.x), üç yeni dilde tam metin dizini oluşturma desteği ekler:

  • Fince (LCID 1035)
  • Macarca (LCID 1038)
  • Estonca (LCID 1061)

Yeni belge türleri için destek

SQL Server 2025 (17.x), varsayılan olarak aşağıdaki belge uzantılarının dizinini oluşturmak için destek ekler.

Filtre 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

Beklenmeyen sonuçlar

SQL Server 2025'teki (17.x) yeni bileşenler uygulamalara beklenmeyen sonuçlar döndürebilir. Örneğin, İngilizce (LCID 1033) sözcük ayırıcısını göz önünde bulundurun:

Süre Önceki sözcük ayırıcı ile elde edilen sonuçlar Yeni sözcük ayırıcı ile sonuçlar
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

Özelleştirme modeli

Sürüm 2 tam metin dizinleri artık Windows kayıt defterinden bileşen işleyicilerini okumaz. Özelleştirmeyi örneğe özgü bir JSON dosyası aracılığıyla denetleyebilirsiniz. Daha fazla bilgi için bkz. Filtreleri ve sözcük ayırıcıları özelleştirme.

Yükseltme ve geçiş seçenekleri

SQL Server 2025 (17.x) tüm sürüm 1 ikili dosyalarını kaldırdığından, tam metin sorguları ve sürüm 1 dizinlerini kullanan popülasyonlar yerinde yükseltmeden sonra başarısız olur. Daha fazla bilgi için bkz SQL Server 2025'te Veritabanı Motoru özelliklerinde önemli değişiklikler.

SQL Server 2025 (17.x) veya sonraki sürümlerine yükselttikten sonra ya da sürüm 1 dizinlerini Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği kullanımdan kaldıracak şekilde hazırladıktan sonra aşağıdaki yaklaşımlardan birini kullanın.

Sürüm 1 dizinlerini bulma

Sürüm 1 bileşenlerini kullanmaya devam eden dizinleri bulmak için Full-Text Search kullanan her veritabanında aşağıdaki sorguyu çalıştırın:

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;

Sürüm 2 bileşenleriyle mevcut dizinleri yeniden oluşturma

Sürüm 2 bileşenlerini kullanmak için mevcut tam metin dizinlerini yeniden oluşturun. FULLTEXT_INDEX_VERSION öğesinin 2 olarak ayarlandığını doğrulayın ve ardından tam metin kataloglarını yeniden oluşturun.

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

Note

Katalog yeniden oluşturma işlemi tüm tam metin dizinlerini yeniden oluşturur. Dizin derlemesinin sırasını denetlemek veya kaynak gereksinimlerini azaltmak istiyorsanız, tam metin dizinlerini tek tek bırakın ve yeniden oluşturun .

Sürüm 1 bileşenlerini kullanmaya devam edin

Bu seçeneği yalnızca SQL Server yüklemesindeki dosyaları yönetebileceğiniz SQL Server örnekler için kullanın.

Important

Sürüm 1, Linux üzerinde SQL Server için kullanım dışıdır. SQL Server 2025 (17.x) ve sonraki sürümlerinde paket sürüm mssql-server-fts 1 ikili dosyalarını içermez. ve mssql-server-fts paketlerinin mssql-server eşleşmeyen sürümlerini yüklemeye çalışmak desteklenmez ve tam metin hatalarıyla sonuçlanır.

Uygulama uyumluluğu için sürüm 1'de kalmanız gerekiyorsa, yeniden derleme sırasında istenmeyen sürüm 2'ye yükseltmeyi önlemek için ayarlayın FULLTEXT_INDEX_VERSION = 1 .

ALTER DATABASE SCOPED CONFIGURATION
    SET FULLTEXT_INDEX_VERSION = 1;

Ardından eski sözcük ayırıcı, kökleyici ve filtre ikili dosyalarını eski bir örneğin Binn klasöründen hedef örneğin Binn klasörüne kopyalayın. Her dil veya belge türü için kopyalamanız gereken DLL'ler ve bağımlı kitaplıklarla ilgili başvuru için Tam metin filtre ikili dosyaları ve Tam metin sözcük ayırıcı ve kök bulucu ikili dosyaları konularına bakın.

Sürüm 1 ikili dosyalarının tüm kümesini toplu olarak kopyalamak için aşağıdaki betiği Copy-FulltextV1Components.ps1 adlı bir dosyaya kopyalayın.

<#
.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)."

Betiği bir yönetici PowerShell penceresinde çalıştırın; burada SourceBinn sürüm 1 ikili dosyalarını içeren bir SQL Server 2022 (16.x) veya önceki bir örneğin klasörünün yoludur Binn ve TargetBinn SQL Server 2025 (17.x) veya sonraki bir örneğin sürekli sürüm 1 desteği gerektiren klasörünün yoludurBinn.

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

Sürüm 1 durumu ve ortama göre kullanımdan kaldırma zaman çizelgesi

Environment Durum Eylem Gerekiyor
SQL Server 2025 (17.x) ve sonraki sürümleri Sürüm 1 ikili dosyaları SQL Server kurulumundan kaldırılır. Sürüm 1 sorguları ve popülasyonları yerinde yükseltmeden sonra çalışmaz. Tam metin dizinlerini 2. sürüm bileşenlerini kullanarak yeniden derleyin veya yeniden oluşturun. Uyumluluk için sürüm 1'e ihtiyacınız varsa, yalnızca desteklendiği yerlerde sürüm 1'i kullanın.
SQL Server 2025 güncelleştirme ilkesindeki Azure SQL Yönetilen Örneği Sürüm 1'in kullanımdan kaldırılması aşamalı olarak kullanıma sunuluyor. Etkilenen müşteriler kullanımdan kaldırilmeden önce düzenli olarak e-posta anımsatıcıları alır. Örneğiniz etkilenmeden önce tam metin dizinlerinizi sürüm 2 bileşenlerini kullanarak yeniden derleyin veya yeniden oluşturun. Hemen yükseltemiyorsanız Microsoft desteğine başvurun.
"Always-up-to-date" güncelleştirme ilkesi kapsamındaki Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği Sürüm 1 dizinleri bugün hala desteklenmektedir, ancak kaldırma planlanır. Yeni oluşturulan veya yeniden oluşturulan dizinler varsayılan olarak sürüm 2'yi kullanmaya başlar. Envanter sürüm 1, kesinti süresini en aza indirmek için sürüm 2 bileşenleriyle yeniden oluşturmayı önceden dizinler ve planlar.

Azure SQL kullanımdan kaldırma zaman çizelgesi

Şunlar için geçerlidir: Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği

Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği henüz sürüm 1 ikili dosyalarını kaldırmaz. Bu sunular, mevcut dizinlerin yeniden oluşturulmasına zaman tanımak amacıyla, SQL Server 2025 güncelleştirme ilkesi üzerindeki Azure SQL Yönetilen Örneği ile başlayarak aşamalı olarak kullanımdan kaldırılır. Etkilenen müşteriler, kullanımdan kaldırılana kadar düzenli olarak e-posta anımsatıcıları alır.

Sürüm 1 kullanım dışı bırakıldıktan sonra, sürüm 1 dizinleri üzerindeki sorgular şu hata iletisiyle başarısız olur:

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.

Ve popülasyonlar gezinme günlüğünde aşağıdaki hatalarla başarısız olur:

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.