Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Este artigo descreve a alteração da versão do índice em texto completo no SQL Server 2025 (17.x) e versões posteriores. Abrange alterações de comportamento, passos de migração obrigatórios e novos binários de componentes.
Alterações na versão do índice de texto integral no SQL Server 2025
O SQL Server 2025 (17.x) remove os binários legados de word breaker, stemmer e filter da instalação do SQL Server. Estes componentes são reconstruídos com um conjunto de ferramentas moderno e oferecem suporte alargado para mais linguagens e tipos de documentos. Os componentes instalados com o SQL Server 2025 (17.x) são chamados de versão 2. Os componentes instalados com o SQL Server 2022 (16.x) e versões anteriores são chamados de versão 1.
Após uma atualização no local, os índices de texto completo existentes têm index_version = 1 em sys.fulltext_indexes. Os índices recém-criados usam a versão 2 e os novos componentes, a menos que especifique o contrário usando a configuração FULLTEXT_INDEX_VERSION com âmbito de base de dados.
Alterações de componentes na versão 2
Os componentes da versão 2 adicionam suporte a linguagem e tipos de documentos, utilizam um novo modelo de personalização e podem devolver resultados de tokenização diferentes dos componentes da versão 1.
Suporte para novas línguas
O SQL Server 2025 (17.x) adiciona suporte para indexação de texto completo em três novas línguas:
- Finlandês (LCID 1035)
- Húngaro (LCID 1038)
- Estónio (LCID 1061)
Suporte para novos tipos de documentos
O SQL Server 2025 (17.x) adiciona suporte por padrão para indexar as seguintes extensões de documentos.
| 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 |
Resultados inesperados
Novos componentes no SQL Server 2025 (17.x) podem devolver resultados inesperados às aplicações. Por exemplo, considere o quebrador de palavras em inglês (LCID 1033):
| Termo | Resultados com o divisor de palavras anterior | Resultados com novo divisor de palavras |
|---|---|---|
cat_dog |
cat_dog |
cat_dogcatdog |
$100 |
$100nn100usd |
\$100nn100\$ |
2026-01-09 |
2026-01-092026nn20260109 |
2026-01-09dd2026010920260109 |
Modelo de personalização
Os índices de texto completo da versão 2 já não leem os manipuladores de componentes do registo do Windows. Controlas a personalização através de um ficheiro JSON específico para cada instância. Para obter mais informações, consulte Exibir ou alterar filtros registrados e separadores de palavras.
Opções de atualização e migração
Como o SQL Server 2025 (17.x) remove todos os binários da versão 1, consultas em texto completo e populações que usam índices da versão 1 falham após uma atualização no local. Para mais informações, consulte Alterações significativas às funcionalidades do Database Engine no SQL Server 2025.
Use uma das seguintes abordagens após atualizar para o SQL Server 2025 (17.x) ou versões posteriores, ou ao preparar índices da versão 1 para descontinuação no Base de Dados SQL do Azure e no Azure SQL Managed Instance.
Encontrar índices da versão 1
Execute a seguinte consulta em cada base de dados que utilize a Pesquisa de Texto Integral para localizar índices que ainda utilizam componentes da versão 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;
Reconstruir índices existentes com componentes da versão 2
Reconstruir índices de texto completo existentes para usar componentes da versão 2. Verifica que FULLTEXT_INDEX_VERSION está definido como 2, e depois reconstrói os catálogos em texto completo.
SELECT *
FROM sys.database_scoped_configurations
WHERE [name] = 'FULLTEXT_INDEX_VERSION';
ALTER FULLTEXT CATALOG [FtCatalog] REBUILD;
Note
Uma operação de reconstrução de catálogo reconstrói todos os índices em texto completo. Se quiseres controlar a ordem da construção do índice, ou reduzir os requisitos de recursos, elimina e recria os índices em texto completo individualmente.
Continuar a usar componentes da versão 1
Use esta opção apenas para instâncias do SQL Server onde possa gerir ficheiros na instalação do SQL Server.
Importante
A versão 1 está obsoleta para SQL Server no Linux. No SQL Server 2025 (17.x) e versões posteriores, o mssql-server-fts pacote não inclui binários da versão 1. Tentar instalar versões incompatíveis dos pacotes mssql-server-fts e mssql-server não é suportado e resulta em falhas completas.
Se precisares de manter a versão 1 para compatibilidade com a aplicação, define FULLTEXT_INDEX_VERSION = 1 para evitar uma atualização não intencional da versão 2 durante a reconstrução.
ALTER DATABASE SCOPED CONFIGURATION
SET FULLTEXT_INDEX_VERSION = 1;
De seguida, copie o word breaker legado, stemmer e filtre binários da pasta de Binn uma instância antiga para a pasta da Binn instância de destino. Consulte Filtros e separadores de palavras na Pesquisa de Texto Completo do SQL Server para obter uma referência sobre quais DLLs e bibliotecas dependentes têm de ser copiadas para cada idioma ou tipo de documento.
Para copiar em massa o conjunto completo de binários da versão 1, copie o script seguinte para um ficheiro chamado 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)."
Execute o script numa janela PowerShell de administrador, onde SourceBinn está o caminho para a Binn pasta de uma instância SQL Server 2022 (16.x) ou anterior contendo binários da versão 1, e TargetBinn é o caminho para a Binn pasta de uma instância SQL Server 2025 (17.x) ou posterior que necessita de suporte contínuo da versão 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'
Estado da versão 1 e cronologia de descontinuação por ambiente
| Ambiente | Status | Ação necessária |
|---|---|---|
| SQL Server 2025 (17.x) e versões posteriores | Os binários da versão 1 são removidos da instalação do SQL Server. As consultas e populações da versão 1 falham após a atualização no local. | Reconstrua ou recrie índices de texto integral com componentes da versão 2. Se precisares da versão 1 para compatibilidade, usa a versão 1 apenas onde for suportada. |
| Azure SQL Managed Instance na política de atualização do SQL Server 2025 | A descontinuação da versão 1 está a ser implementada de forma faseada. Os clientes afetados recebem lembretes periódicos por correio eletrónico antes da descontinuação. | Reconstrua ou recrie índices de texto completo com componentes da versão 2 antes de a sua instância ser afetada. Se não puder atualizar imediatamente, contacte o suporte da Microsoft. |
| Base de Dados SQL do Azure e Azure SQL Managed Instance na política de atualização "Sempre atualizada" | Os índices da versão 1 ainda são suportados atualmente, mas a remoção está planeada. Os índices recém-criados ou reconstruídos passarão, por predefinição, a utilizar a versão 2. | O inventário versão 1 indexa e planeia reconstruções com componentes da versão 2 antecipadamente para minimizar o tempo de inatividade. |
Cronograma de descontinuação do SQL do Azure
Aplica-se a: Banco de Dados SQL do Azure e Instância Gerenciada SQL do Azure
O Base de Dados SQL do Azure e o Azure SQL Managed Instance ainda não removem os binários da versão 1. Estas ofertas sofrem uma descontinuação faseada para permitir tempo para reconstruir índices existentes, começando pelo Azure SQL Managed Instance na política de atualização do SQL Server 2025. Os clientes afetados recebem lembretes periódicos por email antes da depreciação.
Após a descontinuação da versão 1, as consultas nos índices da versão 1 falham com a mensagem de erro:
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.
E as populações falham com os seguintes erros no crawl log:
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.
Conteúdo relacionado
- Visualizar ou alterar filtros registados e separadores de palavras (Pesquisa do SQL Server)
- Configurar e gerenciar filtros para pesquisa
- Configurar e gerenciar separadores de palavras e lematizadores para pesquisa (SQL Server)
- sys.fulltext_indexes
- ALTER DATABASE SCOPED CONFIGURATION
- Filtros e separadores de palavras na Pesquisa de Texto Integral do SQL Server