在更新操作系统补丁时,我们发现 SQL Server 也正在接收修补程序补丁;我们不想安装 SQL Server 补丁,也不想停止安装操作系统补丁。
微软表示,“默认情况下,Windows Update 客户端配置为仅为 Windows 提供更新。如果您启用“当我更新 Windows 时为我提供其他 Microsoft 产品的更新”设置,您还会收到其他产品的更新,包括 Microsoft SQL Server 和其他 Microsoft 软件的安全补丁。”
我确实在服务器上检查了此设置,但它处于关闭状态并且显示为灰色。
因此,我相信在安装 SQL Server 时,选中了以下选项,这导致它接收更新:
那么我们如何通过某些策略或注册表项来禁用它?
答案1
可能性 1-Azure 更新管理
从配置更新管理的 Windows 更新设置,您的问题引用了:
默认情况下,Windows 更新客户端配置为仅为 Windows 提供更新。如果您启用当我更新 Windows 时为我提供其他 Microsoft 产品的更新设置,您还会收到其他产品的更新,包括 Microsoft SQL Server 和其他 Microsoft 软件的安全补丁。
它继续说:
如果您已下载并复制了最新的管理模板文件适用于 Windows 2016 及更高版本。
如果您运行的是 Windows Server 2012 R2,则无法通过组策略配置此设置。在这些计算机上运行以下 PowerShell 命令。更新管理符合此设置。
$ServiceManager = (New-Object -com "Microsoft.Update.ServiceManager")
$ServiceManager.Services
$ServiceID = "7971f918-a847-4430-9279-4a52d1efe18d"
$ServiceManager.AddService2($ServiceId,7,"")
可能性 2——自动修补
微软还有另一份文档Azure 虚拟机中的 SQL Server 自动修补。
对“启用/禁用自动修补”的一些引用含糊不清,不清楚它们是仅适用于 SQL 更新还是适用于所有更新。
Setting Possible values Description
------- --------------- -----------
Automated Patching Enable/Disable (Disabled) Enables or disables Automated Patching
for an Azure virtual machine.
此外,屏幕截图中的某些文字暗示这是全有或全无。
设置修补窗口,在此期间所有 Windows 和 SQL 补丁将被应用。(强调)
但随后它继续提供一些 Powershell 代码,这些代码看起来确实可以专门为 SQL 更新进行配置。要启用:
$vmname = "vmname"
$resourcegroupname = "resourcegroupname"
$aps = New-AzVMSqlServerAutoPatchingConfig -Enable -DayOfWeek "Thursday" -MaintenanceWindowStartingHour 11 -MaintenanceWindowDuration 120 -PatchCategory "Important"
并禁用:
-Enable
要禁用自动修补,请运行不带参数的相同脚本New-AzVMSqlServerAutoPatchingConfig
。没有参数-Enable
表示命令禁用该功能。
因为 Powershell 命令名称中包含“SqlServer”,所以这肯定意味着它可以独立于任何其他命令启用/禁用 SQL 更新。
注意事项
自动修补文档的发布日期为 2018 年 3 月 7 日。Azure 的一大优势在于,他们可以随时做出改进。而 Azure 的一大缺点在于,他们可以随时做出改进。
该文档还提到,并非所有 SQL 更新都将作为此更新机制的一部分应用。
重要的 仅安装标记为“重要”或“关键”的 Windows 和 SQL Server 更新。其他 SQL Server 更新(例如未标记为“重要”或“关键”的服务包和累积更新)必须手动安装。
如果您看到 SQL 服务包或累积更新正在应用,则它们一定来自其他更新过程。