选择数据库引擎升级方法

适用于:SQL Server - 仅限 Windows

当为了最小化故障时间和风险而计划将数据库引擎从 SQL Server 的先前版本进行升级时,有几种方法可以考虑。 你可以执行就地升级、迁移到新安装或者执行滚动升级。 下面的图表可帮助你在这些方法中进行选择。 文中还讨论了图表中的每种方法。 为了有助于你了解图表中的决策点,另请参阅计划并测试数据库引擎升级计划

Diagram that shows a Database Engine Upgrade Method Decision Tree.

下载

  • 若要下载 SQL Server,请访问评估中心

  • 已经拥有 Azure 帐户? 然后转到 Azure Marketplace,启动已安装有 SQL Server 开发人员版的虚拟机。

Azure SQL 升级选项

你也可以考虑升级 Azure SQL 数据库、Azure SQL 托管实例或虚拟化 SQL Server 环境作为你升级计划的一部分。 有关这些选项的详细信息,请参阅下面的链接:

就地升级

使用此方法时,SQL Server 安装程序会通过将现有的 SQL Server 位替换为新的 SQL Server 位来升级现有的 SQL Server 安装,然后升级每个系统和用户数据库。

就地升级方法是最简单的,需要一定的故障时间,如果需要进行回退的话,则会花费更长时间进行回退操作,而且并非所有场景都支持这一方法。 有关支持和不支持就地升级方法的方案详细信息,请参阅 支持的版本升级

这种方法经常用于以下方案:

  • 不需要高可用性 (HA) 配置的开发环境。

  • 能够容忍停机时间且在最新的硬件和软件上运行的非任务关键生产的环境。 停机时间量取决于你的数据库大小和 I/O 子系统速度。 在内存优化表处于使用中时升级 SQL Server 2014 (12.x) 会耗费一些额外时间。 有关详细信息,请参阅 计划并测试数据库引擎升级计划

概括而言,就地升级数据库引擎所需的步骤如下所示:

Diagram that shows a Database Engine Upgrade Non-HA In-Place Upgrade.

有关详细步骤,请参阅使用安装向导(安装程序)升级 SQL Server

注意事项

SQL Server 安装程序将在升级前检查过程中停止并重启 SQL Server 实例。

在升级 SQL Server后,早期的 SQL Server 实例将被覆盖,在计算机中不再存在。 因此在升级前,请备份 SQL Server 数据库以及与早期的 SQL Server 实例相关的其他对象。

迁移到新安装

使用此方法时,你需要在建立新的 SQL Server 环境的同时,在新硬盘上使用新版操作系统频繁地维护当前环境。 在新环境中安装 SQL Server 后,执行若干步骤来准备新环境,以便你能够从现有环境将现有用户数据库迁移到新环境并且最小化故障时间。 这些步骤包括迁移下列对象:

  • 系统对象: 某些应用程序依赖于单个用户数据库范围之外的信息、实体和/或对象。 通常,应用程序具有对 mastermsdb 数据库的依赖关系,并且还具有对用户数据库的依赖关系。 用户数据库正确运行所需的存储在该数据库外部的任何内容必须在目标服务器实例上可用。 例如,应用程序的登录名作为元数据存储在 master 数据库中,必须在目标服务器上重新创建这些登录名。 如果应用程序或数据库维护计划依赖于 SQL Server 代理作业(其元数据存储在 msdb 数据库中),则必须在目标服务器实例上重新创建这些作业。 同样,服务器级触发器的元数据存储在 master 中。

    将应用程序的数据库移动到其他服务器实例时,必须在目标服务器实例的 mastermsdb 中重新创建依赖实体和依赖对象的所有元数据。 例如,如果数据库应用程序使用服务器级触发器,则仅在新系统上附加或还原数据库是不够的。 如果不手动在 master 数据库中重新创建这些触发器的元数据,数据库就不能按预期方式工作。 有关详细信息,请参阅当数据库在其他服务器实例上可用时管理元数据 (SQL Server)

  • 存储在 msdb 中的 Integration Services 包:如果要在 msdb 中存储包,需要使用 dtutil Utility 编写这些包的脚本或者将其重新部署到新服务器。 在新服务器上使用包之前,需要将包升级到 SQL Server。 有关详细信息,请参阅 升级 Integration Services 包

  • Reporting Services 加密密钥: 报表服务器配置的一个重要部分是为用于加密敏感信息的对称密钥创建备份副本。 该密钥的备份副本对许多例程操作来说是必需的,通过使用备份副本,您可以在新的安装中重用现有报表服务器数据库。 有关详细信息,请参阅 备份和还原 Reporting Services 加密密钥升级和迁移 Reporting Services

新的 SQL Server 环境有了与现有环境相同的系统对象后,则可立即以最小化现有系统的停机时间的方式从现有系统将用户数据库迁移到 SQL Server 实例。 使用备份和还原完成数据库迁移,或者如果你处于 SAN 环境下,则通过重构 LUN 来完成数据库迁移。 下图中显示了这两种方法的步骤。

注意

停机时间量取决于你的数据库大小和 I/O 子系统速度。 在内存优化表处于使用中时升级 SQL Server 2014 (12.x) 会耗费一些额外时间。 有关详细信息,请参阅 计划并测试数据库引擎升级计划

迁移用户数据库之后,可使用任一方法(例如重命名服务器、使用 DNS 条目和修改连接字符串)将新用户指向新的 SQL Server 实例。 与就地升级相比,新的安装方法可以降低风险、缩短故障时间,并可在升级到 SQL Server 的同时进行硬件和操作系统升级。

注意

如果已有到位的高可用性 (HA) 解决方案或其他的多 SQL Server实例环境,请转到 滚动升级。 如果没有到位的高可用性解决方案,则可以考虑临时配置数据库镜像以进一步最小化停机时间从而简化此升级,或者利用这个机会配置 Always On 可用性组作为永久的 HA 解决方案。

例如,可以使用这种方法来升级:

  • 在不受支持的操作系统上安装 SQL Server 。
  • 由于 SQL Server 2016 (13.x) 及更高版本不支持 x86 安装,请安装 x86(32 位)的 SQL Server。
  • SQL Server 到新硬件和/或操作系统新版本。
  • SQL Server 结合服务器合并。
  • 由于 SQL Server 2016 (13.x) 及更高版本不支持就地升级 SQL Server 2005 (9.x),请使用 SQL Server 2005 (9.x)。 有关详细信息,请参阅是否要从较旧版本的 SQL Server 进行升级

新的安装升级所需的步骤根据你是否在使用连接存储或 SAN 存储而存在少许差异。

  • 连接存储环境: 如果具有使用连接存储的 SQL Server 环境,可通过以下图表和图表内的链接完成 数据库引擎 的新安装升级所需执行的步骤。

    Diagram that shows a new installation upgrade method using backup and restore for attached storage.

  • SAN 存储环境:如果具有使用 SAN 存储的 SQL Server 环境,可通过以下图表和图表内的链接完成数据库引擎的新安装升级所需执行的步骤。

    Diagram that shows a new installation upgrade method using detach and attach for SAN storage.

滚动升级

在涉及多个 SQL Server 实例(这些实例必须以特定顺序进行升级以最大化运行时间、最小化风险和保留功能)的 SQL Server 解决方案环境中,需要执行滚动升级。 滚动升级实质上是按特定顺序升级多个 SQL Server 实例。 可以在每个现有 SQL Server 实例上执行就地升级,也可以执行新安装升级作为升级项目的一部分来简化硬件和/或操作系统的升级。 在很多场景下,都需要使用滚动升级方法。 以下文章中记录了这些方案: