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

適用対象: SQL Server

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

前提条件

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

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

  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 インスタンスの構成のスクリーンショット。

ライセンスのタイプのプロパティを設定する

ライセンスのタイプのいずれかを選びます。 説しくは、「ライセンスのタイプ」を参照してください。

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

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

重要

物理コア ライセンスが従量課金プランで構成されている場合は、ライセンスタイプ従量課金制として設定する必要があります。 これによりVM レベルで追加料金がトリガーされることはありませんが、p-core ライセンスの解約または削除が発生した場合に、ライセンスの継続と課金が保証されます。

拡張セキュリティ更新プログラムに登録する

このセクションでは、個々のホスト向け拡張セキュリティ更新プログラム (ESU) のサブスクライブ手順について説明します。 ESU サブスクリプションを使用するには、ライセンスタイプ従量課金制またはソフトウェア保証付きライセンスに設定する必要があります。 このオプションを使用すると、ホストが仮想マシンの場合は vCPU (v コア) を使用し、ホストが仮想マシンを使用せずに実行されている物理サーバーである場合は物理コアを使用してサブスクライブできます。

「拡張セキュリティ更新プログラムのサブスクライブ」を選択します。 Host 構成プロパティの EnabelExtendedSecurityUpdatesTrueに設定されます。 保存をクリックすると、サブスクリプションがアクティブになります。

ESU ライセンス オプションの詳細については、「運用環境の拡張セキュリティ更新プログラムにサブスクライブする」を参照してください。

Note

  • p-core ESU ライセンスとは異なり、ホストの ESU をサブスクライブするときに、各マシンの課金対象コア数を定義する必要はありません。 SQL Server 用 Azure 拡張機能は、ホストのサイズと種類 (仮想ホストか物理ホストかの区別)、およびSQL Server のエディションを検出し、これらのパラメーターに従った課金を行います。
  • ESU が有効になっている場合、ESU サブスクリプションがキャンセルされるまで、ホストのライセンスタイプライセンスのみには変更できません。

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

仮想マシンを構成しており、ESU サブスクリプションを有効にするときに無制限の仮想化特典を使用している場合は、このチェックボックスをオンにします。 UseEsuPhysicalCoreLicensetrue に設定します。 選択した場合、p-core ライセンスが優先され、VM レベルでの SQL Server ESU 料金は無効になります。

拡張セキュリティ更新の登録を解除する

Azure Arc で有効になっている拡張セキュリティ更新プログラムはいつでもキャンセルできます。 取り消すと、ESU の課金が直ちに停止されます。 [セキュリティ更新プログラムの延長] を選択保存をクリックすると、サブスクリプションが終了します。

除外されたインスタンスのリストに追加する

Azure ポリシーまたは自動オンボード プロセスによって駆動される大規模なオンボード操作から、特定のインスタンスを除外できます。 これらの操作から特定のインスタンスを除外するには、インスタンス名を [インスタンスのスキップ] リストに追加します。 大規模なオンボード オプションの詳細については、「Azure Arc によって有効化された SQL Server の代替デプロイ オプション」を参照してください。

注意事項

従量課金制 (PAYG) を使用する SQL Server インスタンスは除外できません。

更新した構成を保存します。

ライセンスのタイプ、ESU の設定、除外するインスタンスを確認したら、[保存] を選んで変更を適用します。

重要

SQL Server ソフトウェアまたは SQL Server ESU サブスクリプションの無制限の仮想化特典は、リストに示されているプロバイダーのインフラストラクチャではサポートされていません。 リストに示されているプロバイダーの VM で SQL Server を実行し、このオプションを選択した場合、意図は無視され、VM の v-core に対して課金されます。 詳細については、「リスト表示されたプロバイダー」参照してください。

Azure Policyを使用して拡張セキュリティ更新を大規模にサブスクライブする

対象となる Arc 対応SQL Serverインスタンスを拡張セキュリティ更新にサブスクライブするというAzure ポリシー定義を使用して、複数の Arc 対応マシンで ESU サブスクリプションをアクティブ化できます。 このポリシー定義の割り当てを任意のスコープに作成すると、SQL Server 用Azure 拡張機能がインストールされているすべての Arc 対応マシンで ESU が有効になります。 これらのマシンのいずれかに認定された SQL Serverインスタンスがある場合、ESU サブスクリプションは直ちにアクティブにされます。

このポリシーをアクティブにするには、次の手順に従います。

  1. Azure portalで[Azure Policy] に移動し、[定義]を選択します。
  2. 対象となる Arc 対応SQL Serverインスタンスを拡張セキュリティ更新にサブスクライブする」を検索し、ポリシーを右クリックします。
  3. [ポリシーの割り当て]を選択します。
  4. サブスクリプションと、必要に応じてスコープとしてリソース グループを選択します。
  5. [ポリシーの適用] が [有効] に設定されていることを確認します。
  6. [パラメーター] タブで、[拡張セキュリティ更新を有効にする] の値を True に設定します。
  7. [修復] タブで:
    1. このポリシーを既存のリソースに適用するには、[修復タスクの作成]を選択します。 選択されていない場合、ポリシーは新しく作成されたリソースにのみ適用されます。
    2. [マネージド IDを作成する]を選択し、[システム割り当てマネージド ID] (推奨) または[ユーザー割り当てマネージド ID]を選択します。この ID には、[AZURE Extension forSQL Serverのデプロイ][閲覧者] のアクセス許可があります。
    3. ID の場所を選択します。
  8. [確認および作成]を選択します。
  9. [作成] を選択します

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 の初歩的なクエリのサンプル」を参照してください。

ESU にサブスクライブされている 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 ("2012", "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"), ""), Extension_Version = properties.instanceView.typeHandlerVersion
)
on $left.machineId == $right.machineIdHasSQLServerExtensionInstalled
| project-away machineId, containerId, machineIdHasSQLServerExtensionInstalled

課金対象の SQL Server インスタンスをホストする Arc 対応サーバーをリスト表示する

このクエリは、SQL Server ソフトウェアの課金対象またはライセンスが必要な SQL Server インスタンスをホストするマシン (仮想または物理) を識別します。 ライセンスのタイプ、ESU 設定、v-core または p-core のサイズ、その他の関連パラメーターなど、SQL Server 構成の詳細が提供されます。

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 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 Arc
            (
            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'
            | where sqlStatus =~ "Connected"
            | 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
            , Model = tostring(properties.detectedProperties.model)
            , Manufacturer = tostring(properties.detectedProperties.manufacturer)
            , License_Type = tostring(properties1.settings.LicenseType)
            , OS = tostring(properties.osName)
            , Uses_UV = tostring(properties1.settings.UsePhysicalCoreLicense.IsApplied)
            , Cores = tostring(billableCores)
            , Version = sqlVersion
            | project-away machineID
            | order by Edition, 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 ライセンス リソースを作成するには、次のいずれかの方法を使用します。

  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. 変更を行ってから、[適用] を選択する

p-core ライセンスのスコープ内のリソースを管理する

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

  1. [Azure Arc] を選択する
  2. [Data Services] で、[SQL Server ライセンス] を選択する
  3. 該当するライセンスを選択する
  4. [管理][スコープ内のリソース] を選択する

特定のリソースがこのライセンスを使用するように構成されていない場合 ([物理コア ライセンスの適用] 列に「いいえ」が表示される)、次のように変更できます。

  1. リストから特定のリソースを選択する
  2. [ライセンスの適用] タブを選択する
  3. 免責事項を読み、[Confirm] (続行) を選択する

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

SQL Server ESU サブスクリプションの無制限の仮想化特典を管理する

ESU サブスクリプションの無制限の仮想化を有効にするために、Azure Arc によって有効化された SQL Server は、特別なリソース タイプである SQLServerEsuLicense をサポートしています。 このリソースを使用すると、サポート対象外の SQL Server インスタンスを実行する仮想マシンの数に制限なく、一連の物理ホストに対して ESU サブスクリプションを有効にすることができます。 ライセンス モデルの詳細については、「無制限の仮想化を使用した物理コアによる 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 ライセンス リソースを作成するには、次のいずれかの方法を使用します。

  1. [Azure Arc] を選択する
  2. [Data Services] で、[SQL Server ESU ライセンス] を選択する
  3. [+作成] を選択する
  4. 作成ウィザードを完了する

SQL Server ESU ライセンス リソースの更新

SQL Server ESU ライセンスのプロパティを変更するには (サブスクリプションを終了するなど)、次のいずれかの方法を使用します。

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

ESU p-core ライセンスのスコープ内のリソースを管理する

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

  1. [Azure Arc] を選択する
  2. [Data Services] で、[SQL Server ESU ライセンス] を選択する
  3. 該当するライセンスを選択する
  4. [管理][スコープ内のリソース] を選択する

このビューには、管理している p-core ESU ライセンスのバージョンと一致するバージョンのサービス外 SQL Server インスタンスをホストするスコープ内の接続されたマシンのみが表示されます。 特定のリソースがこのライセンスを使用するように構成されていない場合 (物理コア ライセンス適用列に「いいえ」と表示される)、次のように変更できます。

  1. リストから特定のリソースを選択する
  2. サブスクライブする場合は [ESU へのサブスクリプション ] タブを選択し、サブスクライブを解除するには [ESU から サブスクリプション解除 を選択します。
  3. 免責事項を読み、[Confirm] (続行) を選択する

SQL Server ESU ライセンスのスコープ内の 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