Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
В этой статье описывается изменение версии полнотекстового индекса в SQL Server 2025 (17.x) и более поздних версиях. В ней рассматриваются изменения поведения, необходимые шаги миграции и двоичные файлы новых компонентов.
Изменения версии полнотекстового индекса в SQL Server 2025
SQL Server 2025 (17.x) удаляет устаревшие двоичные файлы компонентов разбиения слов, стемминга и фильтров из установки SQL Server. Эти компоненты перестроены с помощью современного набора инструментов и предлагают расширенную поддержку для дополнительных языков и типов документов. Компоненты, установленные с SQL Server 2025 (17.x), называются версией 2. Компоненты, установленные с SQL Server 2022 (16.x) и более ранними версиями, называются версия 1.
После обновления на месте существующие полнотекстовые индексы имеют значение index_version = 1 в sys.fulltext_indexes. Вновь созданные индексы используют версию 2 и новые компоненты, если не указано иное с помощью конфигурации области действия базы данных FULLTEXT_INDEX_VERSION.
Изменения компонентов версии 2
Компоненты версии 2 добавляют поддержку языков и типов документов, используют новую модель настройки и могут возвращать различные результаты маркеризации, отличные от компонентов версии 1.
Поддержка новых языков
SQL Server 2025 (17.x) добавляет поддержку полнотекстового индексирования на трех новых языках:
- Финский (LCID 1035)
- Венгерский (LCID 1038)
- Эстония (LCID 1061)
Поддержка новых типов документов
SQL Server 2025 (17.x) добавляет поддержку индексирования следующих расширений документов по умолчанию.
| Фильтр | Extension |
|---|---|
msgfilt02.dll |
.msg |
odffilt02.dll |
.odp, .ods, .odt |
offfilt02.dll |
.doc, .pps, .ppt, .xlb, .xls, .xlc, .pot, .obt, .obd, .dot, .xlt |
offfiltx02.dll |
.docm, .docx.dotx.pptm.pptx.xlsb.xlsm.xlsx.zip |
onfilter02.dll |
.one |
Непредвиденные результаты
Новые компоненты в SQL Server 2025 (17.x) могут возвращать непредвиденные результаты приложениям. Например, рассмотрим средство разбиения слов на английском языке (LCID 1033):
| Срок | Результаты с помощью предыдущего средства разбиения слов | Результаты нового разделителя слов |
|---|---|---|
cat_dog |
cat_dog |
cat_dogcatdog |
$100 |
$100nn100usd |
\$100nn100\$ |
2026-01-09 |
2026-01-092026nn20260109 |
2026-01-09dd2026010920260109 |
Модель настройки
Полнотекстовые индексы версии 2 больше не считывают обработчики компонентов из реестра Windows. Вы управляете настройками с помощью JSON-файла для конкретного экземпляра. Дополнительные сведения см. в разделе "Настройка фильтров и разбиений слов".
Параметры обновления и миграции
Поскольку SQL Server 2025 (17.x) удаляет все двоичные файлы версии 1, полнотекстовые запросы и операции заполнения, использующие индексы версии 1, завершаются с ошибкой после обновления на месте. Дополнительные сведения см. в статье о критических изменениях функций ядра СУБД в SQL Server 2025.
Используйте один из следующих подходов после обновления до SQL Server 2025 (17.x) или более поздних версий SQL Server либо при подготовке индексов версии 1 к выводу из эксплуатации в База данных SQL Azure и Управляемый экземпляр SQL Azure.
Поиск индексов версии 1
Выполните следующий запрос в каждой базе данных, использующую поиск Full-Text для поиска индексов, которые по-прежнему используют компоненты версии 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;
Перестроение существующих индексов с помощью компонентов версии 2
Перестройте существующие полнотекстовые индексы для использования компонентов версии 2. Убедитесь, что для FULLTEXT_INDEX_VERSION установлено значение 2, а затем перестройте полнотекстовые каталоги.
SELECT *
FROM sys.database_scoped_configurations
WHERE [name] = 'FULLTEXT_INDEX_VERSION';
ALTER FULLTEXT CATALOG [FtCatalog] REBUILD;
Note
Операция перестроения каталога перестраивает все полнотекстовые индексы. Если вы хотите управлять порядком сборки индекса или уменьшить требования к ресурсам, удалите и повторно создайте полнотекстовые индексы по отдельности.
Продолжайте использовать компоненты версии 1
Используйте этот параметр только для экземпляров SQL Server, для которых можно управлять файлами в установке SQL Server.
Important
Версия 1 устарела для SQL Server в Linux. В SQL Server 2025 (17.x) и более поздних версиях пакет не включает двоичные mssql-server-fts файлы версии 1. Попытка установить несовпаденные версии mssql-server-fts и mssql-server пакеты не поддерживается и приводит к сбоям полнотекстового текста.
Если необходимо остаться в версии 1 для совместимости приложений, установите флажок FULLTEXT_INDEX_VERSION = 1 , чтобы избежать непреднамеренного обновления до версии 2 во время перестроения.
ALTER DATABASE SCOPED CONFIGURATION
SET FULLTEXT_INDEX_VERSION = 1;
Затем скопируйте устаревшие двоичные файлы модуля разбиения слов, stemmer и фильтра из папки более старого экземпляра Binn в папку целевого экземпляра Binn. Сведения о том, какие библиотеки DLL и зависимые библиотеки необходимо скопировать для каждого языка или типа документа, см. в двоичных файлах полнотекстового фильтра и двоичных файлах полнотекстового модуля разбиения на слова и модуля стемминга.
Чтобы выполнить массовую копию полного набора двоичных файлов версии 1, скопируйте следующий скрипт в файл с именем 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)."
Запустите скрипт в окне PowerShell администратора, где SourceBinn находится путь к Binn папке SQL Server 2022 (16.x) или более ранней версии, содержащей двоичные файлы версии 1, и TargetBinn это путь к Binn папке SQL Server 2025 (17.x) или более поздней версии, требующей поддержки версии 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'
Статус версии 1 и сроки прекращения поддержки по средам
| Окружающая среда | Status | Обязательное действие |
|---|---|---|
| SQL Server 2025 (17.x) и более поздних версий | Двоичные файлы версии 1 удаляются из установки SQL Server. Запросы и популяции версии 1 перестают работать после обновления без переустановки. | Перестройте или повторно создайте полнотекстовые индексы с компонентами версии 2. Если вам нужна версия 1 для совместимости, используйте версию 1 только в том случае, если она поддерживается. |
| Управляемый экземпляр SQL Azure в рамках политики обновления SQL Server 2025 | Вывод из эксплуатации версии 1 внедряется поэтапно. Клиенты, которых это затрагивает, заранее получают регулярные напоминания по электронной почте перед прекращением поддержки. | Перестройте или пересоздайте полнотекстовые индексы с компонентами версии 2, прежде чем это повлияет на ваш экземпляр. Если вы не сможете немедленно обновиться, обратитесь в службу поддержки Microsoft. |
| База данных SQL Azure и Управляемый экземпляр SQL Azure с политикой обновления "Always-up-to-date" | Индексы версии 1 по-прежнему поддерживаются сегодня, но удаление планируется. Только что созданные или перестроенные индексы по умолчанию начинают использовать версию 2. | Проведите инвентаризацию индексов версии 1 и заранее спланируйте их перестроение с использованием компонентов версии 2, чтобы свести к минимуму время простоя. |
График вывода из эксплуатации Azure SQL
Область применения: База данных SQL Azure и Управляемый экземпляр SQL Azure
База данных SQL Azure и Управляемый экземпляр SQL Azure пока не удаляют двоичные файлы версии 1. Эти продукты проходят поэтапный вывод из эксплуатации, чтобы дать время на перестроение существующих индексов, начиная с Управляемый экземпляр SQL Azure с политикой обновлений SQL Server 2025. Затронутые клиенты получают периодические напоминания по электронной почте перед прекращением использования.
После того как версия 1 объявлена устаревшей, запросы к индексам версии 1 завершаются с сообщением об ошибке:
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.
И заполнение завершается со следующими ошибками в журнале обхода:
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.
Связанные материалы
- Настройка фильтров и разбиений по словам
- Настройка фильтров и управление ими
- Настройка и управление средствами разбиения текста на слова и стеммерами
- sys.fulltext_indexes (Transact-SQL)
- ALTER DATABASE SCOPED CONFIGURATION
- Двоичные файлы полнотекстовой фильтрации
- Двоичные файлы средств полнотекстового разбиения слов и стеммера