Azure Arc によって有効化された SQL Server を構成する

適用対象:SQL Server

各 Azure Arc 対応サーバーには、そのサーバーにインストールされているすべての SQL Server インスタンスに適用される一連のプロパティが含まれています。 これらのプロパティは、SQL Server 用 Azure 拡張機能がマシンにインストールされた後で構成できます。 ただし、このプロパティは、SQL Server インスタンスまたはインスタンスがインストールされている場合にのみ有効になります。 Azure portal では、Azure Arc によって有効化された SQL Server の [概要] に、SQL Server 構成が特定のインスタンスに与える影響が反映されます。

Azure portal の SQL Server 構成を使用すると、次の管理タスクを実行できます。

  1. SQL Server ライセンスの種類を設定する
  2. 拡張セキュリティ更新プログラムのプロパティを設定する
  3. [インスタンスの除外] リストに追加する

前提条件

リソース プロバイダーを登録する

リソース プロバイダーを登録するには、次のいずれかの方法を使用します。

  1. [サブスクリプション] を選択します
  2. サブスクリプションの選択
  3. [設定] で、 [リソース プロバイダー] を選択します
  4. Microsoft.AzureArcDataMicrosoft.HybridCompute を検索し、 [登録] を選択します

SQL Server 構成を設定する

Azure portal、PowerShell、または CLI を使用して、特定の Arc 対応サーバー上のすべての構成設定または一部の構成設定を目的の状態に変更できます。

リソース グループ、サブスクリプション、または複数のサブスクリプションなど、より大きな範囲の SQL Server 構成を 1 つのコマンドで変更するには、modify-license-type.ps1 PowerShell スクリプトを使用します。 これはオープンソースの SQL Server サンプルとして公開されており、ステップ バイ ステップの手順が含まれています。

ヒント

次の理由から、Azure Cloud Shell からスクリプトを実行します。

  • 必要な Azure PowerShell モジュールがプレインストールされています
  • 自動的に認証されます。

詳しくは、「Cloud Shell を使用したスクリプトの実行」をご覧ください。

Azure portal で SQL Server ホストを構成するには、2 つの方法があります。

  • Arc 対応サーバーの概要ページを開き、次のように [SQL Server の構成] を選択します。

    Azure portal 内の Azure Arc によって有効化された SQL Server のスクリーンショット。

    または

  • Arc 対応 SQL Server の概要ページを開き、[プロパティ] を選択します。 [SQL Server 構成] で、変更する必要がある設定を選択します。

    • ライセンスの種類
    • ESU サブスクリプション
    • 自動化された更新

    Azure portal での SQL Server インスタンスの構成のスクリーンショット。

[ライセンスの種類]のプロパティを設定する

ライセンスの種類のいずれかを選びます。 説しくは、「ライセンスの種類」をご覧ください。

拡張セキュリティ更新プログラムのプロパティを設定する

拡張セキュリティ更新プログラム (ESU) は、ライセンスの種類としてソフトウェア アシュアランス付きライセンスまたは従量課金制を使用する、修飾された SQL Server インスタンスで使用できます。 ライセンス タイプがライセンスのみの場合、ESU サブスクリプションをアクティブ化するオプションは無効になります。 「SQL Server の拡張セキュリティ更新プログラム」を参照してください。

Note

  • ESU サブスクリプションをアクティブ化するには、ライセンスの種類を従量課金制またはソフトウェア アシュアランス付きライセンスに設定する必要があります。 [ライセンスのみ] に設定されている場合、[拡張セキュリティ更新プログラム] オプションは無効になります。
  • ESU が有効になっている場合、ESU サブパーティションがキャンセルされるまで、ライセンスの種類LicenseOnly に変更できません。

物理コア ライセンスを適用する

仮想マシンであり、SQL Server ソフトウェアまたは SQL サブスクリプションのライセンスに無制限の仮想化特典を利用している場合は、このチェックボックスを選択します。 選択した場合、p コアが優先され、この VM に関連付けられている SQL Server ソフトウェア コストまたは USU コストが無効になります。

重要

  1. UV 特典は、一覧に示されているプロバイダーのインフラストラクチャで実行されている VM ではサポートされていません。 このような 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 対応サーバーを一覧表示する

このクエリでは、SQL Server インスタンスが検出された Azure Arc 対応サーバーを識別します。

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

このクエリでは、SQL Server インスタンスを持ち、かつ Arc SQL Server 拡張機能がインストールされていない Azure Arc 対応サーバーが返されます。 このクエリは 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. [Data Services] で、[SQL Server ライセンス] を選択する
  3. [Create] をクリックする
  4. [SQL Server 物理コア ライセンス]を選択する
  5. 作成ウィザードを完了する

SQL Server ライセンスのプロパティを変更する

SQL Server ライセンス プロパティを変更する (たとえば、後でアクティブ化する) には、次のいずれかの方法を使用します。

  1. [Azure Arc] を選択する
  2. [Data Services] で、[SQL Server ライセンス] を選択する
  3. 該当するライセンスをクリックする
  4. [管理][設定] を選択する
  5. 変更を行ってから、[適用] をクリックする

スコープ内のリソースを管理する

次の手順を使用して、特定の SQL Server 物理コア ライセンスのスコープ内のリソースを管理できます。

  1. [Azure Arc] を選択する
  2. [Data Services] で、[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