Partage via


Configuration de SQL Server activé par Azure Arc

S’applique à :SQL Server

Chaque serveur avec Azure Arc inclut un ensemble de propriétés qui s’appliquent à toutes les instances SQL Server installées sur ce serveur. Vous pouvez configurer ces propriétés après avoir installé l’extension Azure pour SQL Server sur l’ordinateur. Toutefois, les propriétés ne prennent effet que si une ou plusieurs instances SQL Server sont installées. Dans le portail Azure, la vue d’ensemble de SQL Server activé par Azure Arc reflète la façon dont la configuration de SQL Server affecte une instance particulière.

Prérequis

Inscrire des fournisseurs de ressources

Pour inscrire les fournisseurs de ressources, utilisez l’une des méthodes suivantes :

  1. Sélectionnez Abonnements.
  2. Choisir votre abonnement
  3. Sous Paramètres, sélectionnez Fournisseurs de ressources
  4. Recherchez Microsoft.AzureArcData et Microsoft.HybridCompute, puis sélectionnez Inscrire.

Modifier la configuration de SQL Server

Vous pouvez utiliser le portail Azure, PowerShell ou l’interface CLI pour modifier certains paramètres de configuration ou la totalité de ces derniers sur un serveur avec Arc spécifique à l’état souhaité.

Pour modifier la configuration SQL Server pour une étendue plus grande, tel qu’un groupe de ressources, un abonnement ou plusieurs abonnements avec une seule commande, utilisez le script PowerShell modify-license-type.ps1. Il est publié en tant qu’exemple SQL Server open source et comprend des instructions pas à pas.

Conseil

Exécutez le script à partir d’Azure Cloud Shell, car :

  • il dispose de modules Azure PowerShell requis préinstallés
  • il vous authentifie automatiquement

Pour plus d’informations, consultez Exécution du script à l’aide de Cloud Shell.

Il existe deux façons de configurer l’hôte SQL Server dans le portail Azure.

  • Ouvrez la page de présentation du serveur avec Arc, puis sélectionné Configuration de SQL Server, comme indiqué.

    Capture d’écran de SQL Server activé par Azure Arc dans le portail Azure.

    Or

  • Ouvrez la page de présentation de SQL Server avec Arc, puis sélectionnez Propriétés. Sous Configuration du SQL Server, sélectionnez le paramètre à modifier :

    • Type de licence
    • Abonnement ESU
    • Mises à jour automatisées

    Capture d’écran de la configuration de l’instance SQL Server du portail Azure.

Définir la propriété Type de licence

Choisissez l’un des types de licence. Pour obtenir des descriptions, consultez Types de licence.

Utiliser une licence par cœur physique

Cochez cette case si vous configurez un ordinateur virtuel et que vous utilisez l’avantage de la virtualisation illimitée pour la gestion des licences du logiciel SQL Server ou pour votre abonnement SQL. Cela définit la propriété de configuration de l’hôte UsePhysicalCoreLicense sur True. Si cette option est sélectionnée, la licence p-core aura la précédence et les coûts du logiciel SQL Server seront annulés.

Important

Si la licence par cœur physique est configurée avec un plan de facturation de paiement à l’utilisation, le type de licence sélectionné doit être défini comme paiement à l’utilisation. Cela ne déclenche pas de frais supplémentaires au niveau de l’ordinateur virtuel, garantit la continuité de la licence et de la facturation en cas de désactivation ou de suppression de la licence p-core.

S’abonner aux mises à jour de sécurité étendues (ESU)

Les correctifs de sécurité étendue sont disponibles pour les instances SQL Server qualifiées qui utilisent la licence avec Software Assurance ou le paiement à l’utilisation comme type de licence. Sélectionnez S’abonner aux mises à jour de sécurité étendues. L’abonnement est activé après avoir cliqué sur Enregistrer.

Remarque

  • Pour activer un abonnement ESU, le type de licence doit être défini sur Paiement à l’utilisation ou Licence avec Software Assurance. S’il est défini sur Licence uniquement, les options correctifs de sécurité étendue sont désactivées.
  • Si l’ESU est activé, le type de licence ne peut pas être modifié sur LicenseOnly tant que l’abonnement ESU n’est pas annulé.

Utiliser une licence ESU par cœur physique

Cochez cette case si vous configurez un ordinateur virtuel et que vous utilisez l’avantage de la virtualisation illimitée lorsque vous activez votre abonnement ESU. Cela défini UseEsuPhysicalCoreLicense sur true. Si elle est sélectionnée, la licence p-core est prioritaire et les frais ESU SQL Server au niveau de l’ordinateur virtuel sont annulés.

Se désabonner des mises à jour de sécurité étendues

Vous pouvez annuler les mises à jour de sécurité étendues activées par Azure Arc à tout moment. L'annulation arrête immédiatement les frais des ESU. Sélectionnez Se désabonner des mises à jour de sécurité étendues. L’abonnement est arrêté après avoir cliqué sur Enregistrer.

Ajouter à la liste des instances exclues

Vous pouvez exclure certaines instances des opérations d’intégration à grande échelle pilotées par Azure Policy ou par des processus d’intégration automatique. Pour exclure des instances spécifiques de ces opérations, ajoutez les noms d’instances à la liste Ignorer les instances. Pour plus d’informations sur les options d’intégration à grande échelle, consultez Autres options de déploiement pour SQL Server activé par Azure Arc.

Attention

Les instances SQL Server utilisant le paiement à l’utilisation (PAYG) ne peuvent pas être exclues.

Enregistrez la configuration mis à jour.

Après avoir vérifié le type de licence, le paramètre ESU et les instances à exclure, sélectionnez Enregistrer pour appliquer les modifications.

Important

L’avantage de virtualisation illimité pour les logiciels SQL Server ou pour l’abonnement ESU SQL Server n’est pas pris en charge sur l’infrastructure des fournisseurs répertoriés. Si vous exécutez SQL Server sur l’ordinateur virtuel d’un fournisseur répertorié et sélectionnez cette option, votre intention est ignorée et vous serez facturé pour les v-cores de l’ordinateur virtuel. Pour plus d’informations, consultez Fournisseurs répertoriés.

S'abonner aux Correctifs de sécurité étendus à l'aide d'Azure Policy

Vous pouvez activer l'abonnement ESU sur plusieurs ordinateurs équipés d'Azure Arc à l'aide d'une définition de stratégie Azure appelée Abonnez les instances SQL Server avec Arc éligibles aux mises à jour de sécurité étendues. Lorsque vous créez une affectation de cette définition de stratégie à une étendue de votre choix, elle active l'abonnement ESU sur tous les ordinateurs équipés d'Azure Arc sur lesquels l'extension Azure pour SQL Server est installée. Si l'un de ces ordinateurs dispose d'une instance SQL Server qualifiée, l'abonnement ESU est activé immédiatement.

Suivez les étapes suivantes pour activer cette stratégie :

  1. Accédez à Azure Policy dans le Portail Azure, puis choisissez Définitions.
  2. Recherchez la stratégie Abonnez les instances SQL Server avec Arc éligibles aux mises à jour de sécurité étendues et cliquez dessus avec le bouton droit de la souris.
  3. Sélectionnez Attribuer une stratégie.
  4. Sélectionnez un abonnement et éventuellement un groupe de ressources en tant que portée.
  5. Vérifiez que l'application de la stratégie a le statut Activé.
  6. Dans l'onglet Paramètres, définissez la valeur de l'option Activer les correctifs de sécurité étendus sur Vrai.
  7. Appuyez sur l'onglet Correction :
    1. Sélectionnez Créer une tâche de correction pour que cette stratégie soit appliquée aux ressources existantes. Si elle n'est pas sélectionnée, la stratégie est appliquée uniquement aux ressources nouvellement créées.
    2. Sélectionnez Créer une identité managée et choisissez l'identité managée affectée par le système (recommandé) ou l'identité managée affectée par l'utilisateur, qui dispose des autorisations Azure Extension for SQL Server Deployment et Lecteur.
    3. Sélectionnez l'emplacement de l'identité.
  8. Sélectionnez Vérifier + créer.
  9. Sélectionnez Créer.

Interrogez la configuration de SQL Server

Vous pouvez utiliser Azure Resource Graph pour interroger les paramètres de configuration de SQL Server dans une étendue sélectionnée. Consultez les exemples suivants.

Nombre par type de licence

Cet exemple retourne le nombre par type de licence.

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)

Identifier les instances où le type de licence n’est pas défini

Cette requête retourne une liste d’instances où le type de licence est nul.

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

Répertorier les détails de configuration de chaque instance SQL Server

Cette requête identifie de nombreux détails sur chaque instance, notamment le type de licence, les paramètres ESU et les fonctionnalités activées.

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

Répertorier les serveurs avec Arc dotés d’instances SQL Server

Cette requête identifie les serveurs avec Azure Arc sur lesquels des instances SQL Server ont été découvertes.

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

Cette requête renvoie les serveurs Azure Arc qui ont des instances SQL Server, mais l’extension SQL Server d’Arc n’est pas installée. Cette requête s’applique aux serveurs Windows uniquement.

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

Pour obtenir d’autres exemples de requêtes Azure Resource Graph, consultez Exemples de requêtes Resource Graph de démarrage.

Répertorier les instances SQL Server avec Arc abonnées à l’ESU

L'exemple suivant montre comment afficher toutes les instances SQL Server 2012 (11.x) éligibles et leur statut d'abonnement ESU.

resources
| where type == 'microsoft.azurearcdata/sqlserverinstances'
| extend Version = properties.version
| extend Edition = properties.edition
| extend containerId = tolower(tostring (properties.containerResourceId))
| where Version contains "2012"
| 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

Répertorier les serveurs avec Arc qui hébergent une instance SQL Server facturable

Cette requête identifie les ordinateurs (virtuels ou physiques) qui hébergent des instances SQL Server facturables ou qui nécessitent une licence pour les logiciels SQL Server. Elle fournit les détails de la configuration SQL Server, notamment le type de licence, les paramètres ESU, la taille dans le v-core ou les p-cores et d’autres paramètres pertinents.

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

Gérer un avantage de virtualisation illimité pour SQL Server

Pour activer une virtualisation illimitée, SQL Server activé par Azure Arc prend en charge un type de ressource spécial : SQLServerLicense. Cette ressource vous permet d’acquérir sous licence de nombreuses machines virtuelles avec les instances SQL Server installées. Pour plus d’informations sur le modèle de gestion des licences, consultez gestion des licences des instances SQL Server avec virtualisation illimitée.

Prérequis

Votre rôle RBAC inclut les autorisations suivantes :

  • 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

Créer une licence SQL Server

Pour créer la ressource de licence SQL Server, utilisez l’une des méthodes suivantes :

  1. Sélectionner Azure Arc
  2. Sous Data Services, sélectionnez Licences SQL Server
  3. Sélectionnez +Créer.
  4. Sélectionner Licence par cœur physique SQL Server
  5. Terminer toutes les étapes de l’Assistant de création

Mettre à jour la ressource de licence SQL Server

Pour changer la propriété de la licence SQL Server, par exemple l’activer à une date ultérieure, utilisez l’une des méthodes suivantes :

  1. Sélectionner Azure Arc
  2. Sous Data Services, sélectionnez Licences SQL Server
  3. Sélectionnez la licence en question
  4. Sélectionner Configurer sous Gestion
  5. Apportez vos modifications, puis sélectionnez Appliquer

Gérer les ressources dans l’étendue de la licence p-core

Vous pouvez gérer les ressources dans l’étendue d’une licence par cœur physique spécifique de SQL Server en suivant les étapes suivantes :

  1. Sélectionner Azure Arc
  2. Sous Data Services, sélectionnez Licences SQL Server
  3. Sélectionnez la licence en question
  4. Sélectionner Ressources dans l’étendue sous Gestion

Si les ressources spécifiques ne sont pas configurées pour utiliser cette licence (Appliquer la colonne de licence par cœur physique affiche « NON »), vous pouvez changer ce paramètre :

  1. Sélectionner les ressources spécifiques de la liste
  2. Sélectionnez l’onglet Appliquer la licence
  3. Lisez la clause d'exclusion de responsabilité et sélectionnez Confirmer

Répertorier les serveurs activés par Arc dans l’étendue de la licence SQL Server

Cette requête répertorie tous les serveurs activés par Azure Arc dans l’étendue de la licence et les propriétés pertinentes de chacun d’eux.

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

Gérer l’avantage de virtualisation illimité pour l’abonnement à ESU SQL Server

Pour activer une virtualisation illimitée pour un abonnement ESU, SQL Server avec Azure Arc prend en charge un type de ressource spécial : SQLServerEsuLicense. Cette ressource vous permet d’activer un abonnement ESU pour un ensemble d’hôtes physiques avec un nombre illimité d’ordinateurs virtuels exécutant les instances SQL Server non prises en charge. Pour plus d’informations sur le modèle de gestion des licences, consultez gestion des licences des instances SQL Server avec virtualisation illimitée.

Prérequis

Votre rôle RBAC inclut les autorisations suivantes :

  • 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

Créer une ressource de licence ESU SQL Server

Pour créer la ressource de licence ESU SQL Server, utilisez l’une des méthodes suivantes :

  1. Sélectionner Azure Arc
  2. Sous Data Services, sélectionnez Licences ESU SQL Server
  3. Sélectionnez +Créer.
  4. Terminer toutes les étapes de l’Assistant de création

Mettre à jour la ressource de licence ESU SQL Server

Pour changer les propriétés de la licence ESU SQL Server, par exemple pour résilier l’abonnement, utilisez l’une des méthodes suivantes :

  1. Sélectionner Azure Arc
  2. Sous Data Services, sélectionnez Licences ESU SQL Server
  3. Sélectionnez la licence en question
  4. Sélectionner Configurer sous Gestion
  5. Apportez vos modifications, puis sélectionnez Appliquer

Gérer les ressources dans l’étendue de la licence p-core ESU

Vous pouvez gérer les ressources dans l’étendue d’une licence ESU SQL Server spécifique en suivant les étapes suivantes :

  1. Sélectionner Azure Arc
  2. Sous Data Services, sélectionnez Licences ESU SQL Server
  3. Sélectionnez la licence en question
  4. Sélectionner Ressources dans l’étendue sous Gestion

Cette vue n’affiche que les ordinateurs connectés dans l’étendue qui hébergent une instance SQL Server hors service avec la version qui correspond à celle de la licence ESU p-core que vous gérez. Si les ressources spécifiques ne sont pas configurées pour utiliser cette licence (la colonne Licence par cœur physique appliquée affiche « NON »), vous pouvez changer ce paramètre :

  1. Sélectionner les ressources spécifiques de la liste
  2. Sélectionnez l’onglet S’abonner aux ESU pour vous abonner ou Se désabonner des ESU pour vous désabonner.
  3. Lisez la clause d'exclusion de responsabilité et sélectionnez Confirmer

Répertorier les serveurs avec Arc dans l’étendue de la licence ESU SQL Server

Cette requête répertorie tous les serveurs activés par Azure Arc dans l’étendue de la licence et les propriétés pertinentes de chacun d’eux.

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