Azure VM 上的SQL Server
本文介绍如何在Azure虚拟机(VM)上为新的和现有的SQL Server启用自动修补。 自动化修补为运行 SQL Server 的 Azure 虚拟机建立维护时间窗口。 只能在此维护时段内安装自动更新。 对于SQL Server,此限制可确保系统更新和任何关联的重启在数据库的最佳时间发生。
重要
- 自动修补功能计划于 2027 年 9 月 17 日停用。 为了避免服务中断,请在此日期之前迁移到 Azure 更新管理器。 避免在新环境中自动打补丁。 对于现有环境,请尽快迁移到 Azure 更新管理器,继续接收Azure VM 上SQL Server修补功能的未来增强功能。
- 使用自动修补,仅安装标记为 "重要" (Important) 或 "严重" (Critical) 的 Windows 和 SQL Server 更新。 必须手动安装其他 SQL Server 更新,例如未标记为 Important 或 Critical 的服务包和累积更新。 若要自动安装累积更新,请改用集成的 Azure 更新管理器 体验。
先决条件
若要使用自动修补,需要考虑以下先决条件:
- 自动修补依赖于 SQL Server IaaS 代理扩展。 当前的 SQL 虚拟机库映像默认添加此扩展。 有关详细信息,请查看 SQL Server IaaS 代理扩展。
- 如果计划使用 PowerShell 配置自动修补,安装最新的 Azure PowerShell 命令。
从 SQL Server 2012 和 Windows Server 2012 开始,支持自动修补。
此外,请考虑以下信息:
- 还有其他几种方法可以实现Azure虚拟机的自动修补,例如 更新管理器 或 自动虚拟机来宾修补。 仅选择一个选项以自动更新您的 VM,因为重叠的工具可能导致更新失败。
- 如果要在不使用自动修补功能的情况下接收 Extended Security Updates (ESUs),可以使用内置Windows 更新通道。
- 对于参与 AlwaysOn 可用性组的不同可用性区域中SQL Server VM,请配置自动修补计划,以便不同可用性区域中的可用性副本不会同时修补。
设置
下表描述了可为自动修补配置的选项。 实际配置步骤因是使用Azure门户还是Azure Windows PowerShell 命令而异。
| 设置 | 可能值 | 说明 |
|---|---|---|
| 自动修补 | 启用/禁用(已禁用) | 启用或禁用Azure虚拟机的自动修补。 |
| 维护计划 | 每天、星期一、星期二、星期三、星期四、星期五、星期六、星期日 | 下载和安装虚拟机的Windows、SQL Server和Azure更新的计划。 |
| 维护开始时间 | 0-24 | 更新虚拟机的本地开始时间。 |
| 维护时段持续时间 | 30-180 | 允许完成更新下载和安装的分钟数。 |
| 修补程序类别 | 重要 | 要下载和安装的Windows更新类别。 |
在 Azure 门户中配置
可以通过 Azure 门户在预配期间或对现有 VM 配置自动化修补。
新的虚拟机
在资源管理器部署模型中创建新的SQL Server虚拟机时,请使用 Azure 门户配置自动修补。
在SQL Server设置选项卡上,选择更改配置下的自动修补。 以下Azure门户屏幕截图显示了 SQL 自动修补窗格。
有关详细信息,请参阅 在 Azure 上预配 SQL Server 虚拟机。
现有 VM
对于现有SQL Server虚拟机,请打开 SQL 虚拟机资源,然后在 Settings 下选择 Updates。
如果从未在门户中为任何 SQL Server VM 启用 Azure 更新管理器 功能,请选择 Enable,以便为现有的 SQL Server VM 启用自动更新功能。
如果您之前使用过 Azure 更新管理器,需要在您的 SQL 虚拟机资源下的 设置 页面转到 更新,然后选择退出新体验以返回到 自动修补程序体验。
启用自动修补并配置修补设置后,选择“更新”页底部的“确定”按钮以保存更改。
如果首次启用自动修补,Azure在后台配置 SQL Server IaaS 代理。 在此期间,Azure 门户可能不会显示已配置自动修补功能。 请等待几分钟,以便安装和配置代理。 之后,Azure门户将反映新设置。
使用 PowerShell 配置
预配 SQL VM 后,使用 PowerShell 配置自动修补。
在以下示例中,PowerShell 用于在现有 SQL Server VM 上配置自动修补。 New-AzVMSqlServerAutoPatchingConfig 命令可为自动更新配置新的维护时段。
Update-AzSqlVM -ResourceGroupName 'resourcegroupname' -Name 'vmname' `
-AutoPatchingSettingDayOfWeek Thursday `
-AutoPatchingSettingMaintenanceWindowDuration 120 `
-AutoPatchingSettingMaintenanceWindowStartingHour 11 `
-AutoPatchingSettingEnable
下表基于此示例介绍了对目标Azure VM 的实际影响:
| 参数 | 效果 |
|---|---|
| AutoPatchingSettingDayOfWeek | 每个星期四安装修补程序。 |
| AutoPatchingSettingMaintenanceWindowDuration | 必须在 120 分钟内完成修补程序安装。 根据开始时间,他们必须在下午1:00之前完成任务。 |
| AutoPatchingSettingMaintenanceWindowStartingHour | 在上午 11:00 开始更新。 |
| AutoPatchingSettingEnable | 启用自动修补 |
安装和配置 SQL Server IaaS 代理可能需要几分钟时间。
若要禁用自动修补,请运行以下脚本,并将 -AutoPatchingSettingEnable 上的值设置为 $false。
Update-AzSqlVM -ResourceGroupName 'resourcegroupname' -Name 'vmname' -AutoPatchingSettingEnable:$false
了解将使用自动修补应用哪些更新
若要了解通过自动修补将会应用哪些更新,请查看更新指南并应用严重性筛选器来识别关键更新和重要更新。
注意事项
请考虑有关自动修补的以下信息:
- 自动修补未识别 SQL Server VM 的 Always On 可用性组配置。 因此,在为可用性组副本创建修补计划以避免意外故障转移时要谨慎。
- 如果SQL Server VM 位于可用性集中,并且已配置 AlwaysOn 可用性组,则如果同时应用修补程序,则这两个节点可能会重启,因此,请务必为每个节点设置不同的日/时间修补计划。
- 虚拟机可以在预定义的维护时段内重启。 可以使用事件查看器来确认 VM 是否在自动修补期间的维护时段内重启。 来宾修补可能在维护窗口之外重启您的 VM。
- 如果更新失败并显示一条错误消息
The user data or log directory is invalid,原因可能是数据库中新数据或日志文件的默认位置指向了无效的位置。 若要解决此问题,请查看 无效的目录错误。
从自动修补迁移到Azure 更新管理器
Azure 更新管理器是一项统一的服务,可帮助你大规模管理和控制所有虚拟机和SQL Server实例的更新。 与自动修补不同,Azure 更新管理器为SQL Server安装累积更新。 建议仅使用一个自动修补服务来管理SQL Server VM 的更新。
如果当前使用的是自动修补程序,则可以迁移到 Azure 更新管理器。