适用于: SQL Server 2025 (17.x)
SQL Server 2025 (17.x) 安装新的断字符和筛选器,替换这些组件的所有早期版本。 随 SQL Server 2025 (17.x) 一起安装的二进制文件称为 版本 2,随 SQL Server 2022 (16.x) 和早期版本一起安装的二进制文件称为 版本 1。 本文介绍如何在版本 2 和版本 1 组件之间切换。
从版本 2 切换到版本 1 组件
注释
使用随 SQL Server 2025 (17.x) 一起安装的默认第 2 版断字符和筛选器。 它们得到了增强、更安全且符合安全扫描的要求。
全文索引的默认数据库范围配置为版本 2。 将其更改为版本 1。
ALTER DATABASE SCOPED CONFIGURATION SET FULLTEXT_INDEX_VERSION = 1;
从 SQL Server 2025(17.x)中删除旧版版本 1 断字符和筛选器。 必须从 SQL Server 2022 (16.x) 或以前的实例目录 C:\Program Files\Microsoft SQL Server\MSSQL16.<instance-name>\MSSQL\Binn 复制这些二进制文件。
对于现有索引,请使用 sys.fulltext_indexes 目录视图验证版本。 如果索引已是版本 1,则无需重新生成它。 对于版本 2 索引,请重新生成目录以切换回版本 1。
从版本 1 切换到版本 2 组件
对于从 SQL Server 2022(16.x)升级到 SQL Server 2025(17.x)的实例,必须使用版本 2 组件重新生成包含版本 1 组件的全文索引。
ALTER FULLTEXT CATALOG [FtCatalog] REBUILD;
注释
目录重新生成作将重新生成所有全文索引。 如果要控制索引生成的顺序或减少资源要求, 请单独删除并重新创建 全文索引。
更改用于美国英语和英国英语的断字符号
适用于:SQL Server 2022(16.x)及更低版本以及 Azure SQL 数据库
SQL Server 2012 (11.x)为英语安装了更新的分词器和词干提取器版本,替换了这些组件的早期版本。 有关更新组件的更改后行为的信息,请参阅全文搜索的行为更改。
本文介绍如何从这些组件的更新版本切换到以前的版本,或从以前的版本切换回更新的版本。 对于群集安装,在所有节点上进行这些更改。
部分旧版 SQL Server 使用了不同的断字符,由用于美国英语 (LCID 1033) 和英国英语 (LCID 2057) 的不同 CLSID 表示。 在 SQL Server 2012(11.x)及更高版本中,两个区域设置标识符(LCID)使用相同的组件和相同的 CLSID,如下表所示:
| LCID | 以前版本安装的分词器(版本 12.0.6828.0) | 以前版本安装的词干分析器 | 随 Microsoft SQL Server 2012 及以上版本一起安装的分词器(版本 14.0.4999.1038) | 在 SQL Server 2012 及更高版本中安装的 Stemmer |
|---|---|---|---|---|
1033 (美国英语) |
188d6cc5-cb03-4c01-912e-47d21295d77e |
eeed4c20-7f1b-11ce-be57-00aa0051fe20 |
9faed859-0b30-4434-ae65-412e14a16fb8 |
e1e5ef84-c4a6-4e50-8188-99aef3de2659 |
2057 (英国英语) |
173c97e2-aebe-437c-9445-01b237abf2f6 |
d99f7670-7f1a-11ce-be57-00aa0051fe20 |
9faed859-0b30-4434-ae65-412e14a16fb8 |
e1e5ef84-c4a6-4e50-8188-99aef3de2659 |
本文中所述的组件是安装在 MSSQL\Binn SQL Server 实例文件夹中的 DLL 文件。 完整路径通常是 C:\Program Files\Microsoft SQL Server\<instance>\MSSQL\Binn。
有关分词器和词干分析器的详细信息,请参阅配置和管理分词器和词干分析器以用于搜索(SQL Server)。
从当前英语分词器切换到以前的英语分词器。
此示例使用MSSQL17.MSSQLSERVER作为<InstanceRoot>值,这是 SQL Server 2025(17.x)的默认实例。 调整此值以匹配环境。
以下命令在 Windows 注册表中添加或更新密钥,以便为 LCID 1033 的旧版美国英语断字和词干接口配置 COM 类 ID。enu
从提升的命令提示符运行以下命令:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSearch\CLSID\{188D6CC5-CB03-4C01-912E-47D21295D77E}" /ve /t REG_SZ /d "langwrbk.dll"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSearch\CLSID\{EEED4C20-7F1B-11CE-BE57-00AA0051FE20}" /ve /t REG_SZ /d "infosoft.dll"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSearch\Language\enu" /v "WBreakerClass" /t REG_SZ /d "{188D6CC5-CB03-4C01-912E-47D21295D77E}" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSearch\Language\enu" /v "StemmerClass" /t REG_SZ /d "{EEED4C20-7F1B-11CE-BE57-00AA0051FE20}" /f
重启 SQL Server 以使用这些分词符设置。
从以前的英语分词器切换回当前的英语分词器
此示例将MSSQL17.MSSQLSERVER用于<InstanceRoot>值,这是 SQL Server 2025(17.x)的默认实例。 调整此值以匹配环境。
以下命令用于在 Windows 注册表中添加或更新密钥,以将 COM ClassID 的语言设置从美国英语恢复为 LCID 1033 (enu)。
从提升的命令提示符运行以下命令:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSearch\CLSID\{9FAED859-0B30-4434-AE65-412E14A16FB8}" /ve /t REG_SZ /d "MsWb7.dll"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSearch\CLSID\{E1E5EF84-C4A6-4E50-8188-99AEF3DE2659}" /ve /t REG_SZ /d "MsWb7.dll"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSearch\Language\enu" /v "WBreakerClass" /t REG_SZ /d "{9FAED859-0B30-4434-AE65-412E14A16FB8}" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSearch\Language\enu" /v "StemmerClass" /t REG_SZ /d "{E1E5EF84-C4A6-4E50-8188-99AEF3DE2659}" /f
重启 SQL Server 以使用这些断字符设置。