适用于: SQL Server 2025 (17.x)
本文介绍 SQL Server 2025(17.x)中引入的 SQL Server 数据库引擎中的功能的重大更改。 这些更改可能会中断基于早期版本的 SQL Server 的应用程序、脚本或功能。
升级后链接服务器连接失败
SQL Server 2025(17.x)对加密进行了更改,这些更改对链接服务器引入了重大变更。 这些更改可能会中断基于早期版本的 SQL Server 的应用程序、脚本或功能。
使用 Microsoft OLE DB Driver 19 从早期版本的 SQL Server 升级到 SQL Server 2025(17.x),现有链接服务器配置可能会失败。 加密参数的不同默认值可能会导致此失败,除非提供了有效的证书。
在 SQL Server 2025(17.x):
-
将服务器链接到 SQL Server 2025 的实例必须使用
Encrypt连接字符串中的参数 - 使用 Microsoft OLE DB Driver 19 从以前的 SQL Server 版本迁移到 SQL Server 2025 时,现有链接服务器配置可能会失败
有关如何安全地连接到 SQL Server 2025 (17.x) 实例的信息,请参阅 TDS 8.0。
升级后复制组件失败
SQL Server 2025 (17.x)中的加密更改引入了对事务、快照、对等和合并复制的中断性变更。
从 SQL Server 的所有早期版本升级到 SQL Server 2025(17.x)后,复制组件可能会失败,前提是 SQL Server 实例:
- 配置为复制发布服务器。
- 在复制拓扑中具有远程分发服务器。
- 未使用受信任的证书进行配置。
升级后可能会看到以下行为:
- 复制将继续成功,但发布更改失败。
- SQL Server Management Studio 中的复制监视器(SSMS)失败。
- SSMS UI 中的代理状态失败。
远程分发服务器使用链接服务器在发布服务器和分发服务器之间进行通信。 该安全默认值在 OLEDB 19 提供程序的 SQL Server 2025(17.x)中引入,要求 TrustServerCertificate=False。
可以在开始升级之前先发制人地解决此问题,或者在升级后复制组件失败时解决此问题。
开始升级之前
如果知道升级后 SQL Server 实例会遇到此问题,可以通过将 SQL Server 实例配置为使用 公共商业证书 或 内部证书颁发机构的证书来抢先缓解故障。
这是建议的最大安全性选项。
升级后失败的组件
如果在升级后复制组件失败,仍可将 SQL Server 实例配置为使用来自内部证书颁发机构的公共商业证书或证书。
或者,可以选择不安全的选项来替代 OLEDB 19 提供程序的安全默认值并设置 trust_distributor_certificate=yes ,以便分发服务器信任自签名证书。
若要替代新的安全默认值,请使用sp_changedistributor_property存储过程将选项设置为trust_distributor_certificateyes:
EXECUTE sp_changedistributor_property
@property = N'trust_distributor_certificate',
@value = N'yes';
注释
安全默认值与基础 OLEDB 提供程序 19 相关,可增强安全性。 替代默认值的选项比将实例配置为使用受信任的证书不太安全。 重写默认值后,可以选择将 SQL Server 配置为使用证书,然后使用 sp_changedistributor_property 存储过程将 trust_distributor_certificate=no 属性设置回安全默认值。
添加远程复制分发服务器失败
SQL Server 2025 (17.x) 包括 对加密 的更改,这些更改引入了 对事务、 快照、 对等和 合并 复制的重大更改。
为复制配置分发服务器时, sp_adddistributor 存储过程在以下情况下失败:
- 发布服务器是 SQL Server 2025(17.x)实例。
- 分发服务器是远程分发服务器。
- 分发服务器未配置受信任的证书。
在发布服务器实例上运行时 sp_adddistributor ,可能会看到以下错误:
OLE DB provider "MSOLEDBSQL19" for linked server "repl_distributor" returned message
"Client unable to establish connection".
Msg -2146893019, Level 16, State 1, Line 21
SSL Provider: The certificate chain was issued by an authority that is not trusted.
远程分发服务器使用链接服务器在发布服务器和分发服务器之间进行通信。 在 SQL Server 2025(17.x)中引入的 OLEDB 19 提供程序的安全默认设置要求TrustServerCertificate=False。
若要解决此问题,请将分发服务器 SQL Server 实例配置为使用来自内部证书颁发机构的公共商业证书或证书。
或者,可以选择不安全的选项来替代 OLEDB 19 提供程序的安全默认值并设置 TrustServerCertificate=True ,以便分发服务器信任自签名证书。 若要替代默认值,在调用trust_distributor_certificate存储过程时使用参数:
EXECUTE sys.sp_adddistributor @trust_distributor_certificate = 'yes';
注释
安全默认值与基础 OLEDB 提供程序 19 相关,可增强安全性。 替代默认值的选项比将实例配置为使用受信任的证书不太安全。 重写默认值后,可以选择将 SQL Server 配置为使用证书,然后使用 sp_changedistributor_property 存储过程将 trust_distributor_certificate=no 属性设置回安全默认值。
远程日志传送的监控可能会中断
SQL Server 2025 (17.x) 包括 对加密 的更改,这些更改引入了 对日志传送的重大更改。 升级时可能会遇到这些问题。
当日志传送拓扑中的其他 SQL Server 实例使用以前的版本时,如果监视器是远程 SQL Server 2025(17.x)实例,日志传送监控可能会失效。
有关如何安全地连接到 SQL Server 2025 (17.x) 实例的信息,请参阅 TDS 8.0。
升级后 Full-Text 查询和填充数据失败
SQL Server 2025(17.x)移除了全文搜索所使用的所有遗留断词程序和筛选器二进制文件。 这些组件是使用新式工具集重新构建的,为更多语言和文档类型提供扩展的支持。 升级后的现有索引根据index_version = 1按sys.fulltext_indexes指定。 新创建的索引被指定为版本 2,并使用新的组件,除非通过数据库范围配置另行指定 FULLTEXT_INDEX_VERSION。
对版本 1 索引的任何 Full-Text 查询在升级后无法立即在磁盘上找到断字符二进制文件:
Msg 30010, Level 16, State 2, Line 8
An error has occurred during the full-text query. Common causes include: word-breaking errors or timeout, FDHOST permissions/ACL issues, service account missing privileges, malfunctioning IFilters, communication channel issues with FDHost and sqlservr.exe, etc. If recently performed in-place upgrade to SQL2025, For help please see https://aka.ms/sqlfulltext.
同样,升级后,在版本 1 索引上执行的任何全文索引填充都无法在磁盘上找到筛选器二进制文件。
Warning: No appropriate filter was found during full-text index population for table or indexed view '[db].[dbo].[table_name]' (table or indexed view ID '901578250', database ID '5'), full-text key value '1'. Some columns of the row were not indexed.
使用新版本重新生成现有索引
继续使用索引的建议方法是使用较新的版本 2 组件重新生成索引。
-- Verify value = 2
SELECT *
FROM sys.database_scoped_configurations
WHERE [name] = 'FULLTEXT_INDEX_VERSION';
-- Per catalog upgrade
ALTER FULLTEXT CATALOG [FtCatalog] REBUILD;
在不重新生成整个目录的情况下升级单个索引的唯一方法是删除并重新创建它们。
继续使用版本 1
如果需要在版本 1 上保持应用程序兼容性,请先确保设置 FULLTEXT_INDEX_VERSION = 1 以避免在重新生成时意外升级。
ALTER DATABASE SCOPED CONFIGURATION
SET FULLTEXT_INDEX_VERSION = 1;
然后,必须将旧断字符和筛选二进制文件从旧实例复制到目标实例 binn 的文件夹。