Azure VM 上的 SQL Server 常见问题解答

适用于: Azure VM 上的 SQL Server

本文提供有关在 Windows Azure 虚拟机 (VM) 上运行 SQL Server 时出现的一些最常见问题的解答。

如果本文未解决你的 Azure 问题,请访问 MSDN 和 CSDN 上的 Azure 论坛。 可以在这些论坛上发布问题。 还可提交 Azure 支持请求。 若要提交支持请求,请在 Azure 支持页上提交。

映像

有哪些 SQL Server 虚拟机库映像可用?

Azure 为所有 Windows 和 Linux 版本中的所有受支持 SQL Server 主要发行版维护虚拟机映像。 有关详细信息,请参阅 Windows VM 映像Linux VM 映像的完整列表。

现有的 SQL Server 虚拟机库映像是否会更新?

每隔两个月,都会使用最新的 Windows 和 Linux 更新对虚拟机库中的 SQL Server 映像进行更新。 对于 Windows 映像,这包括 Windows 更新中标记为重要的任何更新,以及重要的 SQL Server 安全更新和 Service Pack。 对于 Linux 映像,这包括最新的系统更新。 Linux 和 Windows 的 SQL Server 累积更新以不同的方式进行处理。 对于 Linux,SQL Server 累积更新也包含在刷新中。 但目前,Windows VM 不会连同 SQL Server 或 Windows Server 累积更新一起更新。

是否可以从库中删除 SQL Server 虚拟机映像?

是的。 Azure 只为每个主要版本维护一个映像。 例如,发布新的 SQL Server Service Pack 时,Azure 会将新映像添加到该 Service Pack 的库。 先前 Service Pack 的 SQL Server 映像将立即从 Azure 门户中删除。 但是,在接下来的三个月,仍可以通过 PowerShell 预配该映像。 三个月之后,先前的 Service Pack 映像不再可用。 如果 SQL Server 版本由于生命周期结束而不受支持,则也会应用此删除策略。

是否可以部署 Azure 门户中不可见的较旧的 SQL Server 映像?

是的,使用 PowerShell。 有关使用 PowerShell 部署 SQL Server VM 的详细信息,请参阅如何使用 Azure PowerShell 预配 SQL Server 虚拟机

是否可以创建 SQL Server VM 的通用化 Azure 市场 SQL Server 映像并使用它来部署 VM?

可以,但必须向 SQL IaaS 代理扩展注册每个 SQL Server VM,以便在门户中管理 SQL Server VM,以及利用自动修补和自动备份等功能。 在注册到该扩展时,还需要为每个 SQL Server VM 指定许可证类型。

如何使 Azure VM 上的 SQL Server 通用化并使用它部署新 VM?

可以部署 Windows Server VM(不安装 SQL Server),并使用 SQL sysprep 进程和 SQL Server 安装媒体将 Azure VM (Windows) 上的 SQL Server 通用化。

另外,也可使用 Azure 市场中的 SQL Server 映像之一来将 Azure VM 上的 SQL Server 通用化。 请注意,在创建你自己的映像之前,必须在源映像中删除以下注册表项。 如果不这样做,可能会导致 SQL Server 安装程序的启动文件夹扩展以及/或者 SQL IaaS 扩展处于故障状态。

注册表项路径:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\SysPrepExternal\Specialize

备注

Azure VM 上的 SQL Server(包括那些从自定义通用化映像部署的 SQL Server)应该注册到 SQL IaaS 代理扩展,以便能够满足合规要求并利用可选功能(例如自动修补和自动备份)。

是否可以使用我自己的 VHD 来部署 SQL Server VM?

可以,但必须向 SQL IaaS 代理扩展注册每个 SQL Server VM,以便在门户中管理 SQL Server VM,以及利用自动修补和自动备份等功能。

是否可以设置虚拟机库中未显示的配置(例如 Windows 2008 R2 + SQL Server 2012)?

否。 对于包含 SQL Server 的虚拟机图库映像,必须通过 Azure 门户或 PowerShell 选择提供的某个映像。 但是,可以部署一个 Windows VM 并在其中自行安装 SQL Server。 然后必须向 SQL IaaS 代理扩展注册 SQL Server VM,以便在 Azure 门户中管理 SQL Server VM,以及利用自动修补和自动备份等功能。

创建

如何创建装有 SQL Server 的 Azure 虚拟机?

最简单的方法是创建包含 SQL Server 的虚拟机。 有关注册 Azure 并从门户创建 SQL Server VM 的教程,请参阅在 Azure 门户中预配 SQL Server 虚拟机。 可选择使用按秒付费 SQL Server 许可的虚拟机映像,或者可以使用允许自带 SQL Server 许可证的映像。 此外,你也可以选用免费许可版(开发人员版或速成版),或通过重新使用本地许可证在 VM 上手动安装 SQL Server。 请务必向 SQL IaaS 代理扩展注册 SQL Server VM,以便在 Azure 门户中管理 SQL Server VM,以及利用自动修补和自动备份等功能。 有关详细信息,请参阅 SQL Server Azure VM 定价指南

如何将本地 SQL Server 数据库迁移到云中?

首先,请创建装有 SQL Server 实例的 Azure 虚拟机。 然后将本地数据库迁转到该实例。 有关数据迁移策略,请参阅 将 SQL Server 数据库迁移到 Azure VM 中的 SQL Server

授权

如何在 Azure VM 上安装 SQL Server 的许可版本?

可通过两种方式来执行此操作。 企业协议 (EA) 客户可以预配支持许可证的虚拟机映像之一,也称为自带许可 (BYOL)。 或者,可将 SQL Server 安装媒体复制到 Windows Server VM,然后在 VM 上安装 SQL Server。 请务必将 SQL Server VM 注册到该扩展,以便能够使用门户管理、自动备份和自动修补等功能。

是否可以使用 Azure 门户来管理同一 VM 上的多个实例?

不是。 门户管理是 SQL IaaS 代理扩展提供的功能,它依赖于 SQL Server IaaS 代理扩展。 因此,对这两个扩展应用的限制相同。 只要配置正确,门户就可管理一个默认实例或一个命名实例。

什么是被动实例?

被动 SQL Server 实例不向客户端提供 SQL Server 数据,也不运行主动 SQL Server 工作负载。 它仅用于与主服务器同步,否则将被动数据库保持在热备用状态。 如果它正在为数据提供服务,例如向运行活动 SQL Server 工作负载的客户端提供报告,或者执行产品条款中未指定的任何工作,则必须是付费许可的 SQL Server 实例。 在次要实例上允许进行以下活动:数据库一致性检查或 CheckDB、完整备份、事务日志备份和监视资源使用情况数据。 还可以同时运行主灾难恢复实例和相应灾难恢复实例,以便每 90 天进行一次短暂的灾难恢复测试。

分机

将 VM 注册到新的 SQL IaaS 代理扩展是否需额外付费?

不是。 SQL IaaS 代理扩展只是进一步提高了 Azure VM 上的 SQL Server 的可管理性,不会额外收费。

SQL IaaS 代理扩展是否适用于所有客户?

是的,只要使用资源管理器模型而不是使用经典模型将 SQL Server VM 部署到云就行。 所有其他客户都可以注册到新的 SQL IaaS 代理扩展。

如果移动或删除 VM 资源,扩展(“Microsoft.SqlVirtualMachine”)资源会发生什么情况?

删除或移动 Microsoft.Compute/VirtualMachine 资源时,会通知关联的 Microsoft.SqlVirtualMachine 资源以异步方式复制此操作。

如果删除扩展(“Microsoft.SqlVirtualMachine”)资源,VM 会发生什么情况?

删除 Microsoft.SqlVirtualMachine 资源时,Microsoft.Compute/VirtualMachine 资源不受影响。 但是,许可更改会默认回退到原始的映像源。

是否可将自行部署的 SQL Server VM 注册到 SQL IaaS 代理扩展?

是的。 如果你从自己的媒体部署了 SQL Server,并安装了 SQL IaaS 扩展,则可将 SQL Server VM 注册到该扩展,以获得 SQL IaaS 扩展提供的可管理性优势。

管理

是否可以在同一 VM 上安装另一个 SQL Server 实例? 是否可以更改默认实例的已安装功能?

是的。 SQL Server 安装介质位于 C 驱动器上的某个文件夹中。 可从该位置运行 Setup.exe 以添加新的 SQL Server 实例,或更改计算机上 SQL Server 的其他已安装功能。 请注意,某些功能(例如自动备份、自动修补和 Azure Key Vault 集成)仅对默认实例或配置正确的命名实例起作用(请参阅问题 3)。 除非配置正确,否则安装更多 SQL Server 实例可能会导致系统资源变得紧张。

一个 VM 上的最大实例数是多少?

SQL Server 2012 至 SQL Server 2019 可以支持一个独立服务器上的 50 个实例。 不管是在 Azure 中还是在本地,此限制都是相同的。 请参阅最佳做法了解如何更好地准备环境。

是否可以卸载 SQL Server 的默认实例?

可以,但需注意以下事项。 首先,根据 VM 的许可模型,与 SQL Server 相关的计费可能会继续发生。 其次,如前面的解答中所述,某些功能依赖于 SQL Server IaaS 代理扩展。 如果卸载默认实例但未同时删除 IaaS 扩展,该扩展会继续查找默认实例并可能生成事件日志错误。 这些错误来自以下两个源:Microsoft SQL Server 凭据管理和 Microsoft SQL Server IaaS 代理 。 其中一个错误可能类似于以下内容:

建立与 SQL Server 的连接时,出现网络相关或特定于实例的错误。 找不到或无法访问服务器。

如果你决定卸载默认实例,还要卸载 SQL Server IaaS 代理扩展。

是否可以使用包含 IaaS 扩展的 SQL Server 命名实例?

如果该命名实例是 SQL Server 上的唯一实例,并且正确卸载了原始的默认实例,则可以这样做。 如果没有默认实例,但是单个 SQL Server VM 上有多个命名实例,则 SQL Server IaaS 代理扩展将无法安装。

是否可以使用 Azure 门户来管理同一 VM 上的多个实例?

不是。 门户管理由 SQL IaaS 代理扩展提供,依赖于 SQL Server IaaS 代理扩展。 因此,对这两个扩展应用的限制相同。 只要配置正确,门户就可管理一个默认实例或一个命名实例。

更新和修补

如何将更新和服务包应用于 SQL Server VM?

虚拟机允许控制主机,包括应用更新的时间与方法。 对于操作系统,可以手动应用 Windows 更新,或者启用名为自动修补的计划服务。 自动修补将安装任何标记为重要的更新,包括该类别中的 SQL Server 更新。 必须手动安装其他可选的 SQL Server 更新。

如何获取终止支持的 SQL Server 2008 和 SQL Server 2008 R2 实例的免费扩展安全更新?

可以通过将 SQL Server 按原样迁移到 Azure 虚拟机,获取免费扩展安全更新。 有关详细信息,请参阅终止支持选项

常规

Azure VM 是否支持 SQL Server 故障转移群集实例 (FCI)?

是的。 可以使用存储子系统的 Azure 共享磁盘高级文件共享 (PFS)存储空间直通 (S2D) 来配置故障转移群集实例。 高级文件共享提供可满足许多工作负载需求的 IOPS 和吞吐量。 对于 IO 密集型工作负载,请根据托管的高级磁盘考虑使用存储空间直通。 或者,可使用第三方群集或存储解决方案,如 Azure 虚拟机中 SQL Server 的高可用性和灾难恢复中所述。

SQL Server VM 与 SQL 数据库服务之间的差别是什么?

从概念上讲,在 Azure 虚拟机上运行 SQL Server 与在远程数据中心运行 SQL Server 并没什么不同。 相比之下,Azure SQL 数据库 可提供数据库即服务。 使用 SQL 数据库时,无法访问托管数据库的计算机。 有关完整比较,请参阅选择云 SQL Server 选项:Azure SQL (PaaS) 数据库或 Azure VM 上的 SQL Server (IaaS)

如何在 Azure VM 上安装 SQL Data Tools?

SQL Server VM 是否支持使用 MSDTC 的分布式事务?

是的。 SQL Server 2016 SP2 和更高版本支持本地 DTC。 但是,在使用 Always On 可用性组时必须对应用程序进行测试,因为故障转移期间正在进行的事务将会失败,并且必须重试。 从 Windows Server 2019 开始将会推出群集 DTC。

Azure SQL 虚拟机是否将客户数据移出区域,或者在区域外部存储客户数据?

不是。 事实上,Azure SQL 虚拟机和 SQL IaaS 代理扩展不存储任何客户数据。

SQL Server IaaS 代理扩展

是否应从 Azure 市场中的 SQL Server 映像预配的 SQL Server VM?

不是。 Microsoft 会自动注册从 Azure 市场中的 SQL Server 映像预配的 VM。 仅当 VM 不是从 Azure 市场中的 SQL Server 映像预配的,并且 SQL Server 是自行安装的时,才需要注册到该扩展。

SQL IaaS 代理扩展是否适用于所有客户?

是的。 如果客户未使用 Azure 市场中的 SQL Server 映像,而是自行安装的 SQL Server,或者如果他们提供自定义 VHD,则应该将其 SQL Server VM 注册到该扩展。 所有类型的订阅(“直接”、“企业协议”和“云解决方案提供商”)拥有的 VM 都可以注册到 SQL IaaS 代理扩展。

注册到 SQL IaaS 代理扩展的先决条件是什么?

除了需要在 VM 上安装 SQL Server 之外,注册到 SQL IaaS 代理扩展无需满足其他先决条件。

是否可以通过 Azure 门户注册到 SQL IaaS 代理扩展?

不是。 无法在 Azure 门户中注册到 SQL IaaS 代理扩展。 仅支持使用 Azure CLI 或 Azure PowerShell 注册到 SQL IaaS 代理扩展。

是否可以在安装 SQL Server 之前将 VM 注册到 SQL IaaS 代理扩展?

不是。 VM 必须至少有一个 SQL Server(数据库引擎)实例才能成功注册到 SQL IaaS 代理扩展。 如果 VM 上没有 SQL Server 实例,则新的 Microsoft.SqlVirtualMachine 资源会处于失败状态。

如果有多个 SQL Server 实例,是否可将 VM 注册到 SQL IaaS 代理扩展?

可以,前提是该 VM 上有一个默认实例。 SQL IaaS 代理扩展只会注册一个 SQL Server(数据库引擎)实例。 如果有多个 SQL Server 实例,SQL IaaS 代理扩展将注册默认的实例。

是否可将 SQL Server 故障转移群集实例注册到 SQL IaaS 代理扩展?

是的。 Azure VM 上的 SQL Server 故障转移群集实例可以注册到 SQL IaaS 代理扩展。

如果配置了 Always On 可用性组,是否可将 VM 注册到 SQL IaaS 代理扩展?

是的。 如果你正在参与 Always On 可用性组配置,可以不受限制地将 Azure VM 上的 SQL Server 实例注册到 SQL IaaS 代理扩展。

如何删除该扩展?

从 SQL IaaS 代理扩展中取消注册 SQL Server VM 即可删除该扩展。