配置已启用 Azure Arc 的 SQL Server

适用于:SQL Server

每个已启用 Azure Arc 的服务器都包含一组应用于该服务器中安装的所有 SQL Server 实例的属性。 在计算机上安装 SQL Server 的 Azure 扩展后,可以配置这些属性。 但只有安装了一个或多个 SQL Server 实例时,这些属性才会生效。 在 Azure 门户中,已启用 Azure Arc 的 SQL Server 的“概述”页面介绍了 SQL Server 配置对特定实例产生的影响。

Azure 门户 SQL Server 配置允许执行以下管理任务:

  1. 配置 SQL Server 许可证类型
  2. 设置扩展安全更新程序属性
  3. 添加到“排除实例”列表

先决条件

  • 你至少在组织创建的其中一个 Azure 订阅中拥有参与者角色。 了解如何创建新的计费订阅
  • 对于将在其中注册 SQL Server 实例的资源组,你拥有参与者角色。 有关详细信息,请参阅托管的 Azure 资源组
  • 在用于 SQL Server 即用即付计费的每个订阅中都注册了 Microsoft.AzureArcDataMicrosoft.HybridCompute 资源提供程序。

注册资源提供程序

若要注册资源提供程序,请使用以下方法之一:

  1. 选择订阅
  2. 选择自己的订阅
  3. 在“设置”下,选择“资源提供程序
  4. 搜索 Microsoft.AzureArcDataMicrosoft.HybridCompute,并选择“注册

修改 SQL Server 配置

可以使用 Azure 门户、PowerShell 或 CLI 将特定的已启用 Arc 的服务器上的所有或某些配置设置更改为所需状态。

要使用单个命令修改较大范围(例如资源组、订阅或多个订阅)的 SQL Server 配置,请使用 modify-license-type.ps1 PowerShell 脚本。 它作为开放源代码 SQL Server 示例发布,并包含分步说明。

提示

从 Azure Cloud Shell 运行脚本,因为:

  • 它预先安装了所需的 Azure PowerShell 模块
  • 它自动对你进行身份验证

有关详细信息,请参阅使用 Cloud Shell 运行脚本

可通过两种方式在 Azure 门户 中配置 SQL Server 主机。

  • 打开已启用 Arc 的服务器概述页,然后选择“SQL Server 配置”,如下所示。

    Azure 门户中 Azure Arc 启用的 SQL Server 的屏幕截图。

  • 打开已启用 Arc 的 SQL Server 概述页,然后选择“属性”。 在“SQL Server 配置”下,选择需要修改的设置:

    • 许可证类型
    • ESU 订阅
    • 自动更新

    Azure 门户 SQL Server 实例配置的屏幕截图。

设置许可证类型属性

选择一种许可证类型。 有关说明,请参阅许可证类型

设置扩展安全更新程序属性

扩展安全更新程序 (ESU) 适用于将具有软件保障或即用即付的许可证作为许可证类型的合格 SQL Server 实例。 如果许可证类型为仅限许可证,则将禁用激活 ESU 订阅的选项。 请参阅 SQL Server 的扩展安全更新程序

注意

  • 若要激活 ESU 订阅,许可证类型必须设置为即用即付或具有软件保障的许可证。 如果仅将其设置为“仅限许可证”,则会禁用扩展的安全更新程序选项。
  • 如果启用了 ESU,则在取消 ESU 订阅之前,许可证类型无法更改为 LicenseOnly

应用物理核心许可证

如果这是虚拟机,并且你利用无限虚拟化权益来许可 SQL Server 软件或 SQL 订阅,请选中此复选框。 如果选中,p 核心将优先,并且与此 VM 关联的 SQL Server 软件成本或 USU 成本将取消。

重要

  1. 在列出的提供程序基础结构上运行的 VM 不支持 UV 权益。 如果为此类 VM 选择此选项,则会忽略此意向,并且你需要为 VM 的 v 核心付费。 有关详细信息,请参阅列出的提供程序
  2. 如果要配置不受上述限制约束的 VM,请确保所选的许可证类型与 p 核心许可证资源中配置的计费计划匹配。

添加到“排除实例”列表

可以从 Azure 策略驱动的大规模加入操作或自动加入流程中排除某些实例。 要从这些操作中排除特定实例,请将实例名称添加到“跳过实例”列表中。 有关大规模加入选项的详细信息,请参阅已启用 Azure Arc 的 SQL Server 的备用部署选项

注意

不能排除使用即用即付 (PAYG) 付费模式的 SQL Server 实例。

保存更新的配置

验证许可证类型、ESU 设置以及要排除的任何实例后,选择“保存”以应用更改。

查询 SQL Server 配置

可以使用 Azure Resource Graph 查询所选范围内的 SQL Server 配置设置。 请参阅以下示例。

按许可证类型计数

此示例将按许可证类型返回计数。

resources
| where type == "microsoft.hybridcompute/machines/extensions"
| where properties.type in ("WindowsAgent.SqlServer","LinuxAgent.SqlServer")
| extend licenseType = iff(properties.settings.LicenseType == '', 'Configuration needed', properties.settings.LicenseType)
| summarize count() by tostring(licenseType)

标识许可证类型未定义的实例

此查询将返回许可证类型为 null 的实例列表。

resources
| where type == "microsoft.hybridcompute/machines/extensions"
| where properties.type in ("WindowsAgent.SqlServer","LinuxAgent.SqlServer")
| where isnull(properties.settings.LicenseType)
| project ['id'], resourceGroup, subscriptionId

列出每个 SQL Server 实例的配置详细信息

此查询标识有关每个实例的许多详细信息,包括许可证类型、ESU 设置和启用的功能。

resources
| where type == "microsoft.hybridcompute/machines"| where properties.detectedProperties.mssqldiscovered == "true"| extend machineIdHasSQLServerDiscovered = id
| project name, machineIdHasSQLServerDiscovered, resourceGroup, subscriptionId
| join kind= leftouter (
    resources
    | where type == "microsoft.hybridcompute/machines/extensions"    | where properties.type in ("WindowsAgent.SqlServer","LinuxAgent.SqlServer")
    | extend machineIdHasSQLServerExtensionInstalled = iff(id contains "/extensions/WindowsAgent.SqlServer" or id contains "/extensions/LinuxAgent.SqlServer", substring(id, 0, indexof(id, "/extensions/")), "")
    | project Extension_State = properties.provisioningState,
    License_Type = properties.settings.LicenseType,
    ESU = iff(notnull(properties.settings.enableExtendedSecurityUpdates), iff(properties.settings.enableExtendedSecurityUpdates == true,"enabled","disabled"), ""),
    Extension_Version = properties.instanceView.typeHandlerVersion,
    Excluded_instances = properties.ExcludedSqlInstances,
    Purview = iff(notnull(properties.settings.ExternalPolicyBasedAuthorization),"enabled",""),
    Entra = iff(notnull(properties.settings.AzureAD),"enabled",""),
    BPA = iff(notnull(properties.settings.AssessmentSettings),"enabled",""),
    machineIdHasSQLServerExtensionInstalled)on $left.machineIdHasSQLServerDiscovered == $right.machineIdHasSQLServerExtensionInstalled
| where isnotempty(machineIdHasSQLServerExtensionInstalled)
| project-away machineIdHasSQLServerDiscovered, machineIdHasSQLServerExtensionInstalled

使用 SQL Server 的实例列出已启用 Arc 的服务器

此查询会标识已启用 Azure Arc 的服务器,其中发现有 SQL Server 实例。

resources
| where type == "microsoft.hybridcompute/machines"
| where properties.detectedProperties.mssqldiscovered == "true"
//| summarize count()

此查询会返回已启用 Azure Arc 的服务器,这些服务器具有 SQL Server 实例,但未安装 Arc SQL Server 扩展。 此查询仅适用于 Windows 服务器。

resources
| where type == "microsoft.hybridcompute/machines"
| where properties.detectedProperties.mssqldiscovered == "true"
| project machineIdHasSQLServerDiscovered = id
| join kind= leftouter (
    resources
    | where type == "microsoft.hybridcompute/machines/extensions"
    | where properties.type == "WindowsAgent.SqlServer"
    | project machineIdHasSQLServerExtensionInstalled = substring(id, 0, indexof(id, "/extensions/WindowsAgent.SqlServer")))
on $left.machineIdHasSQLServerDiscovered == $right.machineIdHasSQLServerExtensionInstalled
| where isempty(machineIdHasSQLServerExtensionInstalled)
| project machineIdHasSQLServerDiscoveredButNotTheExtension = machineIdHasSQLServerDiscovered

有关 Azure Resource Graph 查询的更多示例,请参阅入门级 Resource Graph 查询

管理无限制虚拟化

为启用无限制虚拟化,由 Azure Arc 启用的 SQL Server 支持特殊的资源类型:SQLServerLicense。 此资源允许你使用已安装的 SQL Server 实例为许多虚拟机授予许可。 有关许可模型的详细信息,请参阅使用无限制虚拟化授予 SQL Server 实例许可

先决条件

你的 RBAC 角色包含以下权限:

  • Microsoft. AzureArcData/SqlLicenses/read
  • Microsoft. AzureArcData/SqlLicenses/write
  • Microsoft.Management/managementGroups/read
  • Microsoft.Resources/subscriptions/read
  • Microsoft.Resources/subscriptions/resourceGroups/read
  • Microsoft.Support/supporttickets/write

创建 SQL Server 许可证

要创建 SQL Server 许可证资源,请使用以下方法之一:

  1. 选择“Azure Arc”
  2. 在“数据服务”下,选择“SQL Server 许可证”
  3. 单击“+创建”
  4. 选择“SQL Server 物理核心许可证”
  5. 完成创建向导

更改 SQL Server 许可证属性

要更改 SQL Server 许可证属性,例如在以后激活它,请使用以下方法之一:

  1. 选择“Azure Arc”
  2. 在“数据服务”下,选择“SQL Server 许可证”
  3. 单击有问题的许可证
  4. 选择“管理”下的“配置”
  5. 做出更改,然后单击“应用”

管理范围中的资源

你可以使用以下步骤管理特定 SQL Server 物理核心许可证范围内的资源:

  1. 选择“Azure Arc”
  2. 在“数据服务”下,选择“SQL Server 许可证”
  3. 单击有问题的许可证
  4. 在“管理”下选择“范围中的资源”

如果未将特定资源配置为使用此许可证(“应用物理核心许可证”列显示“否”),则可以更改:

  1. 在列表上选择特定资源
  2. 单击“应用许可证”选项卡。
  3. 阅读免责声明,然后单击“确认”

列出 SQL Server 许可证范围内已启用 Arc 的服务器

此查询列出了许可证范围内所有已启用 Azure Arc 的服务器以及每个服务器的相关属性。

resources
        | where type =~ 'Microsoft.HybridCompute/machines'
        | where ('${scopeType}'!= 'Subscription' or subscriptionId == '${subscription}')
        | where ('${scopeType}' != 'ResourceGroup' or (resourceGroup == '${resourceGroup.toLowerCase()}' and subscriptionId == '${subscription}'))
        | extend status = tostring(properties.status)
        | where status =~ 'Connected'
        | join kind = leftouter
        (
        resources
        | where type =~ 'Microsoft.HybridCompute/machines/extensions'
        | where name == 'WindowsAgent.SqlServer' or name == 'LinuxAgent.SqlServer'
        | extend machineId = substring(id, 0, indexof(id, '/extensions'))
        | extend extensionId = id
        )
        on $left.id == $right.machineId
        | where isnotnull(extensionId)
        | project id, name, properties.status, resourceGroup, subscriptionId, Model = properties.detectedProperties.model, Manufacturer = properties.detectedProperties.manufacturer, kind, OSE = properties.osName, License_applied = properties1.settings.UsePhysicalCoreLicense.IsApplied
        |order by name asc