本文提供有关在 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 定价指南。
许可
如何在 Azure VM 上安装 SQL Server 的许可版本?
可通过两种方式来执行此操作。 如果你是企业协议 (EA) 客户,则可以配置其中一个虚拟机映像。 或者,可将 SQL Server 安装媒体复制到 Windows Server VM,然后在 VM 上安装 SQL Server。 请务必将 SQL Server VM 注册到该扩展,以便能够使用门户管理、自动备份和自动修补等功能。
管理
是否可以在同一 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 一起安装的 Microsoft Visual C++ 可再发行组件被标记为生命周期结束或已过时
当你在 Azure VM 上预配 SQL Server 时,SQL Server 安装程序会安装 Microsoft Visual C++ 可再发行程序包,它是 SQL Server 组件正常运行所必需的。 根据 SQL Server 安装的 Microsoft Visual C++ 可再发行组件的版本,你的安全软件可能会发送有关生命周期结束 (EOL) 或过时软件组件的警报,尤其是对于较旧版本的 SQL Server(SQL Server 2016 及更早版本)。 根据支持生命周期策略,只要支持安装了 Microsoft Visual C++ 可再发行组件的产品,就支持该组件。 只要已安装的 SQL Server 版本仍受支持,你就可以安全地忽略此警告。 建议不要删除 VC++,因为它可能会中断某些 SQL Server 功能。
是否可以卸载 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 代理扩展。 因此,与扩展相同的限制也适用于门户。 如果配置正确,则门户只能管理一个默认实例或一个命名实例。
Azure VM 上的 SQL Server 是否支持 Azure Active Directory 域服务 (Azure AD DS)?
不是。 Azure VM 上的 SQL Server 当前不支持使用 Azure Active Directory 域服务 (Azure AD DS)。 请改用 Active Directory 域帐户。
更新和修补
如何将更新和服务包应用于 SQL Server VM?
虚拟机允许控制主机,包括应用更新的时间与方法。 对于操作系统,可以手动应用 Windows 更新,或者启用名为自动修补的计划服务。 自动修补将安装任何标记为重要的更新,包括该类别中的 SQL Server 更新。 必须手动安装其他可选的 SQL Server 更新。
如何获取终止支持的实例的免费扩展安全更新?
常规
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?
从 Microsoft SQL Server 数据工具 - Visual Studio 2013 商业智能下载并安装 SQL 数据工具。
SQL Server VM 是否支持使用 MSDTC 的分布式事务?
是的。 SQL Server 2016 SP2 和更高版本支持本地 DTC。 但是,在使用 Always On 可用性组时必须对应用程序进行测试,因为故障转移期间正在进行的事务将会失败,并且必须重试。 从 Windows Server 2019 开始将会推出群集 DTC。
Azure SQL 虚拟机是否将客户数据移出区域,或者在区域外部存储客户数据?
不是。 事实上,Azure SQL 虚拟机和 SQL IaaS 代理扩展不存储任何客户数据。
可用性组的跨群集迁移应使用哪种 Azure 负载均衡器 SKU?
若要在 Azure VM 上的 SQL Server 上执行可用性组的跨群集迁移,请使用标准的 Azure 负载均衡器 SKU。
是否可以使用 Azure 高级文件共享在 SQL Server 的独立实例上托管数据库文件?
是。 使用 SMB 协议的故障转移群集实例和 SQL Server 独立实例都支持 Azure 高级文件共享。
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 代理扩展。
为什么在 Azure 门户中会看到 SQL 虚拟机资源? 该资源是谁创建的? 是否会向我收费?
SQL 虚拟机资源是一种免费资源,可用于从 Azure 门户管理 SQL Server VM。 从 Azure 市场部署 SQL Server VM 映像时,或者在 SQL IaaS 代理扩展中手动注册 SQL Server VM 时,会创建 SQL 虚拟机资源。 如果检测到 SQL Server 实例,Azure 还可为现有 VM 自动创建此资源。 SQL 虚拟机资源不会产生任何关联费用。
是否可以修复 SQL IaaS 代理扩展?
是的。 导航到 SQL Server VM 的“SQL 虚拟机”资源,然后选择“帮助”下的“SQL IaaS 代理扩展设置”以打开修复页面并修复扩展。
是否可以通过 Azure 门户注册到 SQL IaaS 代理扩展?
不是。 无法在 Azure 门户中将单个 VM 注册到 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 即可删除该扩展。