计划并测试数据库引擎升级计划
适用于:SQL Server - 仅限 Windows
若要成功执行 SQL Server 升级,无论使用何种方法,都需要进行相应规划。
发行说明和已知升级问题
升级 数据库引擎 之前,请先查看:
- SQL Server 2022 发行说明
- SQL Server 2019 发行说明
- SQL Server 2017 发行说明
- SQL Server 2016 发行说明
- SQL Server 数据库引擎后向兼容性一文。
升级前规划清单
升级 数据库引擎之前,请先查看以下清单和相关文章。 这些文章适用于所有升级(无论使用何种升级方法),有助于确定最合适的升级方法:滚动升级、新安装升级或就地升级。 例如,如果从 SQL Server 2005 (9.x) 或从 SQL Server 的 32 位版本升级操作系统,则可能无法执行就地升级或滚动升级。 有关决策树的信息,请参阅 Choose a Database Engine Upgrade Method。
硬件和软件要求:查看安装 SQL Server 的硬件和软件要求。 可在以下位置找到这些要求:安装 SQL Server 的硬件和软件要求。 任何升级规划周期的一部分都是考虑升级硬件和操作系统。 较新的硬件速度更快,并且由于处理器较少或数据库和服务器整合,可以减少许可。 这些硬件和软件更改的类型将影响你选择的升级方法类型。
当前环境:研究你当前的环境,了解所用 SQL Server 组件和连接到你的环境的客户端。
客户端提供程序:尽管升级不需要更新每个客户端的提供程序,但是你可以选择这样做。 如果计划升级 SQL Server 2014 (12.x) 或较旧版本,以下 SQL Server 2016 (13.x) 功能将要求为每个客户端提供更新的提供程序,或者更新的提供程序将提供其他功能:
-
重要
SQL Server 2022 (16.x) 和 Azure SQL 数据库中已弃用 Stretch Database。 在数据库引擎的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
TLS 安全更新程序
第三方组件:确定第三方组件(如集成备份)的兼容性。
目标环境:验证目标环境是否符合硬件和软件要求,以及是否能够支持原始系统的要求。 例如,升级可能涉及将多个 SQL Server 实例合并为单个新 SQL Server 实例,或将你的 SQL Server 环境虚拟化为一个私有或公有云。
版本:确定升级的 SQL Server 适当版本,并确定升级的有效升级路径。 有关详细信息,请参阅 Supported Version and Edition Upgrades。 在从 SQL Server 的某一版本升级到另一版本之前,请验证要升级到的版本是否支持当前使用的功能。
注意
在从 SQL Server Enterprise 的以前版本升级到 SQL Server 时,请在“Enterprise Edition:基于内核的许可”和“Enterprise Edition”之间进行选择。 这些 Enterprise 版本仅在许可模式方面存在不同。 有关详细信息,请参阅 Compute Capacity Limits by Edition of SQL Server。
后向兼容性:查看 SQL Server 数据库引擎后向兼容性文章,了解 SQL Server 和要从其开始升级的 SQL Server 版本之间的行为变化。 请参阅 SQL Server Database Engine Backward Compatibility。
数据迁移助手:运行数据迁移助手,以帮助诊断可能会阻止升级过程或由于重大更改而需要修改现有脚本或应用程序的问题。
可在此处下载数据迁移助手。
系统配置检查器:运行 SQL Server 系统配置检查器 (SCC) 以确定 SQL Server 安装程序是否在你计划升级以前检测到任何阻塞问题。 有关详细信息,请参阅 Check Parameters for the System Configuration Checker。
升级内存优化表:将包含内存优化表的 SQL Server 2014 (12.x) 实例升级到 SQL Server 2016 (13.x) 及更高版本时,升级过程需要更多时间来将内存优化表转换为新的磁盘格式。 在此过程中,数据库处于离线状态。 时间量取决于内存优化表的大小和 I/O 子系统的速度。 升级需要三种大小的数据操作才能进行就地升级和新安装升级(滚动升级不需要进行步骤 1,但需要进行步骤 2 和步骤 3):
使用旧的磁盘上格式运行数据库恢复(包含将内存优化表中的所有数据从磁盘上加载到内存中)
以新的磁盘上格式将数据序列化到磁盘
使用新格式运行数据库恢复(包含将内存优化表中的所有数据从磁盘上加载到内存中)
此外,在此过程中磁盘空间不足将导致恢复失败。 确保磁盘上有足够的空间来存储现有数据库,再加上与数据库中
MEMORY_OPTIMIZED_DATA
文件组中容器的当前大小相等的其他存储,以执行就地升级或者将 SQL Server 2014 (12.x) 数据库附加到运行 SQL Server 2016 (13.x) 或更高版本的实例。 使用以下查询来确定MEMORY_OPTIMIZED_DATA
文件组当前所需的磁盘空间,以及升级成功所需的可用磁盘空间量:
SELECT CAST(SUM(size) AS FLOAT) * 8 / 1024 / 1024 AS [size in GB] FROM sys.database_files WHERE data_space_id IN ( SELECT data_space_id FROM sys.filegroups WHERE type = N'FX' );
开发和测试升级计划
最好的方法是像对待任何 IT 项目一样对待升级。 组织一个升级团队,该团队具有数据库管理、网络、提取、转换和加载 (ETL) 以及升级所需的其他技能。 团队需要进行以下工作:
选择升级方法:请参阅选择数据库引擎升级方法。
制定回滚计划:如果需要回滚,执行此计划可以还原原始环境。
确定验收条件:将用户切换到已升级环境之前,验证升级是否成功成。
测试升级计划:要使用实际工作负荷测试性能,请使用 Microsoft SQL Server Distributed Replay 实用工具。 此实用工具可以使用多台计算机模拟任务关键型工作负荷,从而重播跟踪数据。 通过在 SQL Server 升级前和升级后在测试服务器上执行重播,可以测量性能差异,并查找你的应用程序可能与升级版本不兼容的问题。 有关详细信息,请参阅 SQL Server Distributed Replay 和管理工具命令行选项(Distributed Replay 实用工具)。