评估和转换数据库

已完成

假设你是一家律所的数据库管理员,并且运行了数据库审核。 完成此操作后,你向管理层提供结果和建议以进行评估。 他们已注意到你建议立即升级不受支持的 SQL Server 版本,并询问你将如何迁移数据库。 预算尚未确定,你的经理告诉你可能无法获得新许可证的资金。

你有运行 SQL Server 2000、SQL Server 2008 和 SQL Server 2012 的可用数据库服务器。

某些数据库可能需要迁移到 SQL Server 2012 或 SQL Server 2016 的现有实例中。 急需升级不受支持的版本。 探索所有可用的选项,以便在获得许可时做好准备。

在这里,你将探索适用于不同版本 SQL Server 的主要升级路径。

不同版本的可用升级路径

要迁移的数据库的版本越早,可用选项就越少。 如前所述,如果要升级 SQL Server 2000 数据库,则需要在切换到任何更高版本之前临时升级到 SQL Server 2008。

备份和还原

可以针对 SQL Server 2005 到 2016 的任何版本使用备份和还原选项。 无法备份和还原以下任何系统数据库,如 master、model、msdb 或 temp。从源服务器备份数据库并将其还原到目标服务器上,然后更改数据库的兼容性。 例如,若要将名为“客户服务”的数据库的兼容性更改为 SQL Server 2016,请运行以下命令:

ALTER DATABASE [CustomerServices] SET COMPATIBILITY_LEVEL = 130

确保目标环境支持数据库中的所有对象,否则无法更改兼容性级别。 你需要删除所有已弃用的功能(如对已重命名或替换的管理视图的查询)、已更新的系统存储过程或已弃用的数据类型。

大容量加载

早在 SQL Server 2005 版本就可以使用大容量加载操作将数据复制到目标数据库。 通过在目标服务器上创建新数据库,可以使用大容量复制程序 (BCP) 运行脚本以复制数据。 BCP 是复制大量数据的有效解决方案。 如果不熟悉如何编写 BCP 脚本,请考虑花时间学习。

事务复制

通过复制可以升级 SQL Server 数据库,但你需要拥有有关事务复制工作原理的实践知识。 复制支持在拓扑中混合使用版本,因此已经准备好实现升级。 分发服务器的版本必须与发布服务器或更高版本的 SQL Server 的版本相同。 订阅服务器最多可以比发布服务器新或早两个版本。 复制提供了两种升级路径:

  • 并行:通过并行复制,可以在 SQL Server 的目标版本上创建一个新的并行环境。 然后,将数据库、登录名、计划作业和任何其他对象移动到新环境。
  • 就地:就地复制升级会替换现有安装,并同时升级系统数据库和用户数据库。

如果已准备好复制,则应该考虑使用以下选项之一来完成迁移。

可用性组

如果已使用 SQL Server 2012 中引入的 Always On 可用性组,则可以故障转移到 SQL Server 2014 或更高版本的辅助服务器。 主服务器必须运行 SQL Server 2012 SP2 或更高版本,并且可以手动或自动进行故障转移。 故障转移到更高版本且旧版本的 SQL Server 成为辅助服务器后,无法从主服务器接收更改。

数据库镜像

可以使用数据库镜像将运行 SQL Server 2008 SP3、SQL Server 2008 R2 SP2 或更高版本的主体升级到 SQL Server 2014 或更高版本的镜像。 与可用性组一样,当你故障转移到较新版本的 SQL Server 并且旧版本变成镜像时,它将不会从主体接收更改。

日志传送

如果主体正在运行 SQL Server 2008 SP3、SQL Server 2008 R2 SP2 或更高版本,则可以使用日志传送升级到运行 SQL Server 2014 或更高版本的辅助服务器。 故障转移到较新版本的 SQL Server 后,现在作为辅助服务器运行的较旧版本将不会从主服务器接收更改。

数据迁移助手

数据迁移助手 (DMA) 支持 SQL Server 2005 及以上版本。 使用助手可以连接到实例,并选择计划升级的数据库。 告诉助手 SQL Server 的目标版本,它会分析数据库的大小和架构。 助手还会提出升级建议。 分析后,DMA 提供兼容性报告,其中突出显示了中断性变更、行为更改和弃用的功能,以便解决这些问题。

Screenshot of the Data Migration Assistant with the New assessment dialog opened.

DMA 还为数据库如何使用目标版本中的性能、存储和安全功能提供了建议。 可以将这些结果导出到 CSV 或 JSON 文件以供将来参考。 如果有大量要升级的数据库,并且需要一份简要的任务列表以防止升级后应用程序失败时,那么这种情况是理想的。 然后,使用 DMA 将数据库和登录名升级到目标服务器。

选择升级方法

在你的律所中,对于 SQL Server 2000 上的数据库,必须首先使用备份和还原方法升级到 SQL Server 2008。 请确保在迁移后将数据库兼容性级别设置为 100,以便以后可以进一步升级数据库。

完成从 SQL Server 2000 的初始升级后,所有数据库都处于 SQL Server 2008 和更高版本,但你仍面临复杂的情况。

升级所有这些数据库的最简单的一致方法是使用 DMA,这样可以升级在 SQL Server 2005 及更高版本上托管的任何数据库。 此工具提供了在升级数据库之前必须解决的兼容性问题的完整列表。 在使用 DMA 执行升级之前,你的团队可以借助此列表来解决所有问题。

有多种方法可用于升级 SQL Server。 你选择的路径取决于要从哪个版本升级,以及是否存在必须用于升级的故障转移机制。 DMA 支持从 SQL Server 2005 开始的数据库升级。 如果数据库环境中具有不同的版本,则此工具非常适合从一个中心点进行升级。

最有用的一点是,DMA 会突出显示旧数据库中弃用的功能,因此你可以在开始升级之前看到将要中断的代码。 DMA 还会建议可以增强安全性和性能的功能,你可以导出结果。