設定 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 執行個體將在該資源群組中註冊。 如需詳細資訊,請參閱受控的 Azure 資源群組。
Microsoft.AzureArcData
和Microsoft.HybridCompute
資源提供者會在您針對 SQL Server 隨用隨付計費使用的每個訂閱中註冊。
註冊資源提供者
若要註冊資源提供者,請使用下列任一方法:
- 選取 訂用帳戶 。
- 選擇您的訂用帳戶。
- 在 [設定] 下,選取 [資源提供者]。
- 搜尋
Microsoft.AzureArcData
和Microsoft.HybridCompute
,然後選取 [註冊]。
修改 SQL Server 設定
您可以使用 Azure 入口網站、Azure PowerShell 或 Azure CLI,將特定已啟用 Azure Arc 之伺服器上的所有或部分組態設定變更為所需的狀態。
如要以單一命令為更大的範圍 (例如資源群組、訂用帳戶或多個訂用帳戶) 修改 SQL Server 設定,請使用修改 modify-license-type.ps1
PowerShell 指令碼。 其會發佈為開放原始碼 SQL Server 範例,並包含逐步指示。
建議在 Azure Cloud Shell 中執行指令碼,因為:
- 其已預安裝必要的 Azure PowerShell 模組。
- 它會自動驗證您的身分。
如需詳細資料,請參閱使用 Cloud Shell 執行指令碼。
在 Azure 入口網站中有兩種方式可設定 SQL Server 主機:
開啟 Azure Arc 啟用之 SQL Server 的 [概觀] 窗格,然後選取 [SQL Server 設定]。
開啟 Azure Arc 啟用的 SQL Server [概觀] 頁面,然後選取 [屬性]。 在 [SQL Server 設定] 下,選取需要修改的設定:
- 授權類型
- ESU 訂用帳戶
- 自動修補
設定授權類型屬性
選擇其中一種授權類型。 如需說明,請參閱授權類型。
使用實體核心授權
如果您正在設定虛擬機器 (VM) 並且正在使用無限制虛擬化權益來授權 SQL Server 軟體或 SQL 訂用帳戶,則請選取 [使用實體核心授權] 核取方塊。 它會將主機組態屬性 UsePhysicalCoreLicense
設為 True
。 如果選取此核取方塊,則實體核心 (P 核心) 授權的優先順序較高,且 SQL Server 軟體成本會變成空值。
重要
如果 P 核心授權設定為隨用隨付計費方案,則選取的 [授權類型] 值應設定為 [隨用隨付]。 此選擇不會在 VM 層級觸發額外費用,但會在 P 核心授權停用或刪除時確保授權和計費不中斷。
訂閱延伸安全性修補程式
您可訂閱個別主機的延伸安全性修補程式 (ESU)。 若要符合 ESU 訂用帳戶的資格,主機的授權類型必須設定為隨用隨付或具有軟體保證的授權。 此選項可讓您在主機是虛擬機器時使用 vCPU (V 核心) 進行訂閱,或當主機是不使用虛擬機器而執行的實體伺服器時,使用實體核心進行訂閱。
選取 [訂閱延伸安全性修補程式]。 它會將主機組態屬性 EnableExtendedSecurityUpdates
設為 True
。 選取 [儲存] 之後,會啟用此訂用帳戶。
如需 ESU 授權選項的詳細資訊,請參閱在實際執行環境中訂閱延伸安全性修補程式。
注意
不同於 p 核心 ESU 授權,在訂閱主機的 ESU 時,您不需要定義每部機器的可計費的核心數目。 適用於 SQL Server 的 Azure 延伸模組會偵測主機的大小、主機的類型 (虛擬或實體) 以及 SQL Server 版本。 延伸模組會根據這些參數計費。
啟用 ESU 後,在取消 ESU 訂用帳戶之前,您無法將主機的 [授權類型] 值變更為 [僅限授權]。
使用實體核心 ESU 授權
如果您正在設定虛擬機器,並且在啟用 ESU 訂用帳戶時使用無限制虛擬化權益,則請選取 [使用實體核心 ESU 授權] 核取方塊。 其會將 UseEsuPhysicalCoreLicense
設為 true
。
如果選取該核取方塊,則 P 核心授權的優先順序較高,且 VM 層級的 SQL Server ESU 的費用會變成空值。
取消訂閱延伸安全性修補程式
您可以隨時取消由 Azure Arc 啟用的延伸安全性修補程式。 取消後會立即停止 ESU 費用。 選取 [取消訂閱延伸安全性修補程式]。 選取 [儲存] 之後,訂用帳戶會結束。
新增至已排除的執行個體清單
您可以將特定執行個體從由 Azure 原則或自動上線程式驅動的大規模上線作業中排除。 若要從這些作業中排除特定執行個體,請將執行個體名稱新增至 [略過執行個體] 清單。 如需大規模上線選項的詳細資訊,請參閱透過 Azure Arc 啟用的 SQL Server 的替代部署選項。
注意
您無法排除使用隨用隨付計費的 SQL Server 執行個體。
儲存更新的設定
在確認授權類型、ESU 設定和要排除的任何執行個體之後,請選取 [儲存] 以套用變更。
重要
列出的提供者的基礎結構不支援 SQL Server 軟體或 SQL Server ESU 訂用帳戶的無限制虛擬化權益。 如果您在列出的提供者的 VM 中執行 SQL Server,並選取此選項,系統將會忽略您的意圖,而且您將需為 VM 的 V 核心付費。
使用 Azure 原則大規模訂閱延伸安全性修補程式
使用名為針對符合條件的 Arc 所啟用的 SQL Server 執行個體訂閱延伸安全性修補程式的 Azure 原則定義,在多台 Azure Arc 所啟用的機器上啟動 ESU 訂用帳戶。
當您建立此原則定義的指派到您選擇的範圍時,它會在已安裝適用於 SQL Server 的 Azure 延伸模組之所有 Azure Arc 啟用的機器上啟用 ESU。 如果其中任何機器具有合格的 SQL Server 執行個體,ESU 訂用帳戶會立即啟動。
使用下列步驟來啟用此原則:
在 Azure 入口網站中,轉至 [Azure 原則],然後選取 [定義]。
搜尋為符合條件 Arc 啟用的 SQL Server 執行個體訂閱延伸安全性修補程式,然後以滑鼠右鍵按一下該原則。
選取 [指派原則]。
選取訂用帳戶,並選擇性選取資源群組作為範圍。
確定原則強制執行設定為 [已啟用]。
在 [參數] 索引標籤上,將 [啟用擴充安全性更新] 的值設定為 True。
於 [補救] 索引標籤:
- 選擇 [建立補救工作],以便將此原則套用到現有資源。 如果不選取此選項,則原則只會套用至新建立的資源。
- 選取 [建立受控識別],然後選取 [系統指派的受控識別] (建議) 或 [使用者指派的受控識別],其具有適用於 SQL Server 的 Azure 延伸模組和讀者權限。
- 選取身分識別的位置。
選取 [檢閱 + 建立] 。
選取 建立。
查詢 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
列出 Azure Arc 啟用的伺服器及 SQL Server 執行個體
此查詢會識別 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 查詢範例。
列出訂閱 ESU 之 Azure Arc 所啟用的 SQL Server 執行個體
下列範例展示如何檢視所有符合條件的 SQL Server 2012 (11.x) 或 SQL Server 2014 (12.x) 執行個體及其 ESU 訂用帳戶狀態:
resources
| where type == 'microsoft.azurearcdata/sqlserverinstances'
| extend Version = properties.version
| extend Edition = properties.edition
| extend containerId = tolower(tostring (properties.containerResourceId))
| where Version in ("SQL Server 2012", "SQL Server 2014")
| where Edition in ("Enterprise", "Standard")
| where isnotempty(containerId)
| project containerId, SQL_instance = name, Version, Edition
| join kind=inner (
resources
| where type == "microsoft.hybridcompute/machines"
| extend machineId = tolower(tostring(id))
| project machineId, Machine_name = name
)
on $left.containerId == $right.machineId
| join kind=inner (
resources
| where type == "microsoft.hybridcompute/machines/extensions"
| where properties.type in ("WindowsAgent.SqlServer","LinuxAgent.SqlServer")
| extend machineIdHasSQLServerExtensionInstalled = tolower(iff(id contains "/extensions/WindowsAgent.SqlServer" or id contains "/extensions/LinuxAgent.SqlServer", substring(id, 0, indexof(id, "/extensions/")), ""))
| project machineIdHasSQLServerExtensionInstalled,
Extension_State = properties.provisioningState,
License_Type = properties.settings.LicenseType,
ESU = iff(notnull(properties.settings.enableExtendedSecurityUpdates), iff(properties.settings.enableExtendedSecurityUpdates == 'true',"ENABLED","disabled"), "disabled"),
Extension_Version = properties.instanceView.typeHandlerVersion
)
on $left.machineId == $right.machineIdHasSQLServerExtensionInstalled
| project-away machineId, containerId, machineIdHasSQLServerExtensionInstalled
列出裝載可計費 SQL Server 執行個體的 Azure Arc 所啟用的伺服器
此查詢會識別裝載 SQL Server 實例且可計費或需要 SQL Server 軟體授權的連線機器(虛擬或實體)。 其會提供 SQL Server 組態的詳細資料,包括授權類型、ESU 設定、V 核心或 P 核心的大小和其他相關參數。
resources
| where type =~ 'Microsoft.HybridCompute/machines'
| extend status = tostring(properties.status)
| where status =~ 'Connected'
| extend machineID = tolower(id)
| extend VMbyManufacturer = toboolean(iff(properties.detectedProperties.manufacturer in (
"VMware",
"QEMU",
"Amazon EC2",
"OpenStack",
"Hetzner",
"Mission Critical Cloud",
"DigitalOcean",
"UpCloud",
"oVirt",
"Alibaba",
"KubeVirt",
"Parallels",
"XEN"
), 1, 0))
| extend VMbyModel = toboolean(iff(properties.detectedProperties.model in (
"OpenStack",
"Droplet",
"oVirt",
"Hypervisor",
"Virtual",
"BHYVE",
"KVM"
), 1, 0))
| extend GoogleVM = toboolean(iff((properties.detectedProperties.manufacturer =~ "Google") and (properties.detectedProperties.model =~ "Google Compute Engine"), 1, 0))
| extend NutanixVM = toboolean(iff((properties.detectedProperties.manufacturer =~ "Nutanix") and (properties.detectedProperties.model =~ "AHV"), 1, 0))
| extend MicrosoftVM = toboolean(iff((properties.detectedProperties.manufacturer =~ "Microsoft Corporation") and (properties.detectedProperties.model =~ "Virtual Machine"), 1, 0))
| extend billableCores = iff(VMbyManufacturer or VMbyModel or GoogleVM or NutanixVM or MicrosoftVM, properties.detectedProperties.logicalCoreCount, properties.detectedProperties.coreCount)
| join kind = leftouter // Join the extension
(
resources
| where type =~ 'Microsoft.HybridCompute/machines/extensions'
| where name == 'WindowsAgent.SqlServer' or name == 'LinuxAgent.SqlServer'
| extend extMachineID = substring(id, 0, indexof(id, '/extensions'))
| extend extensionId = id
)
on $left.id == $right.extMachineID
| join kind = inner // Join SQL Server instances
(
resources
| where type =~ 'microsoft.azurearcdata/sqlserverinstances'
| extend sqlVersion = tostring(properties.version)
| extend sqlEdition = tostring(properties.edition)
| extend is_Enterprise = toint(iff(sqlEdition == "Enterprise", 1, 0))
| extend sqlStatus = tostring(properties.status)
| extend licenseType = tostring(properties.licenseType)
| where sqlEdition in ('Enterprise', 'Standard')
| where licenseType !~ 'HADR'
| extend ArcServer = tolower(tostring(properties.containerResourceId))
| order by sqlEdition
)
on $left.machineID == $right.ArcServer
| where isnotnull(extensionId)
| summarize Edition = iff(sum(is_Enterprise) > 0, "Enterprise", "Standard") by machineID
, name
, resourceGroup
, subscriptionId
, Status = tostring(properties.status)
, Model = tostring(properties.detectedProperties.model)
, Manufacturer = tostring(properties.detectedProperties.manufacturer)
, License_Type = tostring(properties1.settings.LicenseType)
, ESU = iff(notnull(properties1.settings.enableExtendedSecurityUpdates), iff(properties1.settings.enableExtendedSecurityUpdates == true,"enabled","not enabled"), "not enabled")
, OS = tostring(properties.osName)
, Uses_UV = tostring(properties1.settings.UsePhysicalCoreLicense.IsApplied)
, Cores = tostring(billableCores)
, Version = sqlVersion
| summarize by name, subscriptionId, resourceGroup, Model, Manufacturer, License_Type, ESU, OS, Cores, Status
| project Name = name, Model, Manufacturer, OperatingSystem = OS, Status, HostLicenseType = License_Type, ESU, BillableCores = Cores, SubscriptionID = subscriptionId, ResourceGroup = resourceGroup
| order by Name asc
管理 SQL Server 的無限制虛擬化權益
若要啟用無限制虛擬化,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 授權資源,請使用下列方法之一:
- 選取 Azure Arc。
- 在 [資料服務] 底下,選取 [SQL Server 授權]。
- 選取 [+建立]。
- 選取 [SQL Server 實體核心授權]。
- 完成建立精靈。
更新 SQL Server 授權資源
若要變更 SQL Server 授權屬性 (例如在稍後啟用它),請使用下列方法之一:
- 選取 Azure Arc。
- 在 [資料服務] 底下,選取 [SQL Server 授權]。
- 選取授權。
- 選取 [管理] 底下的 [設定]。
- 進行變更並選取 [套用]。
管理 P 核心授權範圍內的資源
您可以按照下列步驟來管理特定 SQL Server 實體核心授權範圍內的資源:
- 選取 Azure Arc。
- 在 [資料服務] 底下,選取 [SQL Server 授權]。
- 選取授權。
- 在 [管理] 底下選取 [範圍中的資源]。
如果未將特定資源設定為使用此授權 ([套用實體核心授權] 資料行會顯示 [否]),則您可以變更:
- 選取清單中的特定資源。
- 選取 [套用授權]。
- 閱讀免責聲明,然後選取 [確認]。
列出 SQL Server 授權範圍內 Azure 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
管理 SQL Server ESU 訂用帳戶的無限制虛擬化權益
若要啟用 ESU 訂用帳戶的無限制虛擬化,由 Azure Arc 啟用的 SQL Server 會支援特殊的資源類型:SQLServerEsuLicense。 可以使用此資源為一組實體主機啟用 ESU 訂用帳戶,其中數量無限制的虛擬機器會執行不受支援的 SQL Server 執行個體。 如需授權模型的詳細資料,請參閱搭配使用實體核心與無限制虛擬化來訂閱 SQL Server ESU。
必要條件
您的 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 ESU 授權資源
若要建立 SQL Server ESU 授權資源,請使用下列方法之一:
- 選取 Azure Arc。
- 在 [資料服務] 底下選取 [SQL Server ESU 授權]。
- 選取 [+建立]。
- 完成建立精靈。
更新 SQL Server ESU 授權資源
若要變更 SQL Server ESU 授權屬性 (例如中止訂用帳戶),請使用下列其中一個方法:
- 選取 Azure Arc。
- 在 [資料服務] 底下選取 [SQL Server ESU 授權]。
- 選取授權。
- 選取 [管理] 底下的 [設定]。
- 進行變更並選取 [套用]。
管理 ESU P 核心授權範圍內的資源
可以使用下列步驟,管理特定 SQL Server ESU 授權範圍內的資源:
- 選取 Azure Arc。
- 在 [資料服務] 底下選取 [SQL Server ESU 授權]。
- 選取授權。
- 在 [管理] 底下選取 [範圍中的資源]。
此檢視只會在裝載中止服務之 SQL Server 執行個體的範圍中顯示連線的機器,其版本符合您所管理之 P 核心 ESU 授權的版本。 如果未將特定資源設定為使用此授權 ([已套用實體核心授權] 資料行會顯示 [否]),則您可以變更:
- 選取清單中的特定資源。
- 選取 [訂閱 ESU] 索引標籤即可訂閱,或選取 [從 ESU 取消訂閱] 即可取消訂閱。
- 閱讀免責聲明,然後選取 [確認]。
列出 SQL Server ESU 授權範圍內 Azure 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.UseEsuPhysicalCoreLicense.IsApplied
|order by name asc