Configurar SQL Server habilitado por Azure Arc

Se aplica a: SQL Server

Cada servidor habilitado para Azure Arc incluye un conjunto de propiedades que se aplican a todas las instancias de SQL Server instaladas en ese servidor. Puede configurar estas propiedades después de instalar la extensión de Azure para SQL Server en la máquina. Sin embargo, las propiedades solo surten efecto si se instala una instancia o instancias de SQL Server. En Azure Portal, el panel de Información general de SQL Server habilitado por Azure Arc refleja cómo afecta la configuración de SQL Server a una instancia determinada.

Requisitos previos

Registro de proveedores de recursos

Para registrar los proveedores de recursos, utilice uno de los métodos siguientes:

  1. Seleccione Suscripciones.
  2. Elija su suscripción.
  3. En Configuración, seleccione Proveedores de recursos.
  4. Busque Microsoft.AzureArcData y Microsoft.HybridCompute y a continuación seleccione Registrar.

Modifique Configuración De SQL Server

Puede usar Azure Portal, Azure PowerShell o la CLI de Azure para cambiar todos o algunos conjuntos de configuración en un servidor específico habilitado por Azure Arc al estado deseado.

Para modificar la configuración de SQL Server para un ámbito mayor, como un grupo de recursos, una suscripción o varias suscripciones con un solo comando, consulte el script de PowerShell modify-license-type.ps1. Está publicado como un ejemplo de SQL Server de código abierto e incluye instrucciones paso a paso.

Se recomienda ejecutar el script desde Azure Cloud Shell porque:

  • Tiene los módulos de Azure PowerShell necesarios preinstalados.
  • Le autentica automáticamente.

Para más información, consulte Ejecución del script mediante Cloud Shell.

Hay dos maneras de configurar el host de SQL Server en Azure Portal:

  • Abra el panel de Información general de SQL Server habilitado para Azure Arc y seleccione Configuración de SQL Server.

    Captura de pantalla del panel de Información general de SQL Server habilitado por Azure Arc en Azure Portal.

  • Abra el panel de Información general de SQL Server habilitado por Azure Arc y seleccione Propiedades. En Configuración de SQL Server, seleccione la configuración que necesita modificar:

    • Tipo de licencia
    • Suscripción a ESU
    • Aplicación de revisión automatizada

    Captura de pantalla del área de configuración de instancia de SQL Server del Azure Portal.

Establezca la propiedad del tipo de licencia

Elija uno de los tipos de licencia. Consulte Tipos de licencia para ver sus descripciones.

Uso de una licencia de núcleo físico

Active la casilla Uso de una licencia de núcleo físico si está configurando una máquina virtual (VM) y está utilizando la ventaja de virtualización ilimitada para la concesión de licencias del software de SQL Server o de la suscripción de SQL. Establece la propiedad UsePhysicalCoreLicense de configuración del host en True. Si se selecciona esta casilla, la licencia de núcleo físico (p-core) tiene prioridad y los costes de software de SQL Server se anulan.

Importante

Si la licencia de núcleo físico está configurada con un plan de facturación de pago por uso, el valor del tipo de licencia seleccionado se debe establecer como de pago por uso. Esta selección no generará cargos adicionales en el nivel de VM, pero garantizará que las licencias y la facturación no interrumpidas se produzcan si se desactiva o se elimina la licencia de núcleo físico.

Suscripción a actualizaciones de seguridad extendidas

Puede suscribirse a actualizaciones de seguridad ampliada (ESU) para el host individual. Para poder acceder a una suscripción de ESU, el host debe tener el tipo de licencia establecido en Pago por uso o Licencia con Software Assurance. Esta opción permite suscribirse mediante vCPU (núcleos virtuales) cuando el host es una máquina virtual o núcleos físicos cuando el host es un servidor físico que se ejecuta sin usar máquinas virtuales.

Seleccione Suscripción a actualizaciones de seguridad extendidas. Establece la propiedad EnabelExtendedSecurityUpdates de configuración del host en True. La suscripción se activa después de seleccionar Guardar.

Para obtener más información sobre las opciones de licencia de ESU, vea Suscribirse a actualizaciones de seguridad ampliada en el entorno de producción.

Nota:

A diferencia de la licencia de ESU de núcleo físico, al suscribirse a ESU para un host, no es necesario definir el número de núcleos facturables para cada máquina. La extensión de Azure para SQL Server detecta el tamaño y el tipo del host (virtual o físico), así como la edición de SQL Server. La extensión factura según estos parámetros.

Una vez habilitadas las ESU, el valor del Tipo de licencia del host no se puede cambiar a Solo licencia hasta que se cancele la suscripción de ESU.

Uso de la licencia de ESU de núcleo físico

Seleccione la casilla Uso de la licencia de ESU de núcleo físico si va a configurar una máquina virtual y usa la ventaja de virtualización ilimitada al habilitar la suscripción de ESU. Establece UseEsuPhysicalCoreLicense en true.

Si se selecciona esta casilla, la licencia de núcleo físico tiene prioridad y los cargos de ESU de SQL Server en el nivel de máquina virtual se anulan.

Anulación de la suscripción a Actualizaciones de seguridad extendidas

Puede cancelar las actualizaciones de seguridad extendidas habilitadas por Azure Arc en cualquier momento. La cancelación detiene inmediatamente los cargos de las ESU. Seleccione Cancelar suscripción a Actualizaciones de seguridad ampliada. La suscripción finaliza después de seleccionar Guardar.

Adición a la lista de instancias excluidas

Puede excluir determinadas instancias de las operaciones de incorporación a gran escala controladas por directivas de Azure o por procesos de incorporación automática. Para excluir instancias específicas de estas operaciones, añada los nombres de instancia a la lista Omitir instancias. Para más información sobre las opciones de incorporación a escala, consulta Opciones de implementación alternativas para SQL Server habilitado por Azure Arc.

Nota:

No se pueden excluir instancias de SQL Server que usen la facturación de pago por uso.

Guarde el archivo de configuración actualizado

Después de comprobar el tipo de licencia, la configuración de ESU y cualquier instancia que se vaya a excluir, seleccione Guardar para aplicar los cambios.

Importante

La ventaja de virtualización ilimitada para el software de SQL Server o la suscripción de ESU de SQL Server no se admite en la infraestructura de los proveedores enumerados. Si ejecuta SQL Server en la máquina virtual de un proveedor enumerado y selecciona esta opción, se omitirá la intención y se le cobrará por los núcleos virtuales de la máquina virtual.

Suscripción a Actualizaciones de Seguridad ampliada a gran escala mediante Azure Policy

Puede activar la suscripción de ESU en varias máquinas habilitadas para Azure Arc mediante una definición de directiva de Azure denominada Suscripción de instancias aptas de SQL Server habilitadas para Arc a actualizaciones de seguridad ampliada.

Al crear una asignación de esta definición de directiva a un ámbito de su elección, habilita ESU en todas las máquinas habilitadas para Azure Arc que tengan instalada la extensión de Azure para SQL Server. Si alguna de estas máquinas tiene una instancia de SQL Server apta, la suscripción de ESU se activa inmediatamente.

Siga estos pasos para activar esta directiva:

  1. Vaya a Azure Policy en Azure Portal y seleccione Definiciones.

  2. Busque Suscripción de instancias aptas de SQL Server habilitadas para Arc a actualizaciones de seguridad ampliada y haga clic con el botón derecho en la directiva.

  3. Seleccione Asignar directiva.

  4. Seleccione una suscripción y, opcionalmente, un grupo de recursos como ámbito.

  5. Asegúrese de que el Cumplimiento de directivas esté establecido en Habilitado.

  6. En la pestaña Parámetros, establezca el valor de Habilitar las actualizaciones de seguridad ampliadas en True.

  7. En la pestaña Corrección:

    1. Seleccione Crear tarea de corrección para que esta directiva se aplique a los recursos existentes. Si no selecciona esta opción, la directiva solo se aplica a los recursos recién creados.
    2. Seleccione Creación de una entidad administrada y a continuación seleccione Identidad administrada asignada por el sistema (recomendada) o Identidad administrada asignada por el usuario, que tiene permisos de Implementación de la extensión de Azure para SQL Server y de Lector.
    3. Seleccione la ubicación de la identidad.
  8. Seleccione Revisar + crear.

  9. Seleccione Crear.

Consulte la configuración de SQL Server

Puede usar Azure Resource Graph para consultar el conjunto de configuración de SQL Server dentro de un ámbito seleccionado. Algunos ejemplos:

Obtenga el recuento por tipo de licencia

En este ejemplo se devuelve el recuento por tipo de licencia:

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)

Identificación de instancias en las que el tipo de licencia no está definido

Esta consulta devuelve una lista de instancias en las que el tipo de licencia es 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

Lista de los detalles de configuración de cada instancia de SQL Server

Esta consulta identifica muchos detalles sobre cada instancia, incluido el tipo de licencia, la configuración de ESU y las características habilitadas:

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

Enumeración de servidores habilitados para Azure Arc con instancias de SQL Server

Esta consulta identifica los servidores habilitados para Azure Arc con las instancias de SQL Server que se han detectado:

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

Esta consulta devuelve servidores habilitados para Azure Arc que tienen instancias de SQL Server, pero la extensión de SQL Server de Azure Arc no está instalada. Esta consulta se aplica solo a servidores de 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

Para ver más ejemplos de consultas de Azure Resource Graph, consulte Ejemplos de consultas de inicio de Resource Graph.

Enumeración de instancias de SQL Server habilitadas para Azure Arc suscritas a ESU

En el ejemplo siguiente se muestra cómo puede ver todas las instancias de SQL Server 2012 (11.x) o SQL Server 2014 (12.x) aptas y su estado de suscripción de 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

Enumeración de servidores habilitados para Azure Arc en los que se hospeda una instancia de SQL Server facturable

Esta consulta identifica las máquinas (virtuales o físicas) que hospedan instancias de SQL Server que son facturables o que necesitan una licencia para el software de SQL Server. Proporciona los detalles de la configuración de SQL Server, incluido el tipo de licencia, la configuración de ESU, el tamaño en núcleos virtuales o físicos, y otros parámetros pertinentes.

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'
            | 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

Administración de la ventaja de virtualización ilimitada para SQL Server

Para habilitar la virtualización ilimitada, SQL Server habilitado por Azure Arc admite un tipo de recurso especial: SQLServerLicense. Puede usar este recurso para conceder licencias a muchas máquinas virtuales con las instancias de SQL Server instaladas. Para obtener más información sobre el modelo de licencias, consulte Licencias de instancias de SQL Server con virtualización ilimitada.

Requisitos previos

El rol de control de acceso basado en rol (RBAC) incluye los siguientes permisos:

  • 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

Crear una licencia de SQL Server

Para crear el recurso de licencia de SQL Server, utilice uno de los métodos siguientes:

  1. Seleccione Azure Arc.
  2. En Data Services, seleccione Licencias de SQL Server.
  3. Seleccione + Crear.
  4. Seleccione la licencia de núcleo físico de SQL Server.
  5. Complete el asistente para la instalación.

Actualización del recurso de licencia de SQL Server

Para cambiar la propiedad de licencia de SQL Server, por ejemplo, activarla en una fecha posterior, utilice uno de los métodos siguientes:

  1. Seleccione Azure Arc.
  2. En Data Services, seleccione Licencias de SQL Server.
  3. Seleccione la licencia.
  4. Seleccione Configurar en Administración.
  5. Realice los cambios y a continuación seleccione Aplicar.

Administración de recursos en el ámbito de la licencia de núcleo físico

Puede administrar los recursos en el ámbito de una licencia de núcleo físico de SQL Server específica mediante los pasos siguientes:

  1. Seleccione Azure Arc.
  2. En Data Services, seleccione Licencias de SQL Server.
  3. Seleccione la licencia.
  4. Seleccione Recursos en el ámbito en Administración.

Si los recursos específicos no están configurados para usar esta licencia (la columna Aplicar licencia de núcleo físico muestra NO), puede cambiarlo:

  1. Seleccione los recursos específicos en la lista.
  2. Seleccione Aplicar licencia.
  3. Lea el aviso de declinación de responsabilidades y seleccione Confirmar.

Enumeración de servidores habilitados para Azure Arc en el ámbito de la licencia de SQL Server

En esta consulta se enumeran todos los servidores habilitados para Azure Arc en el ámbito de la licencia y las propiedades pertinentes de cada uno:

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

Administración de la ventaja de virtualización ilimitada para una suscripción de ESU de SQL Server

A fin de habilitar la virtualización ilimitada para la suscripción de ESU, SQL Server habilitado por Azure Arc admite un tipo de recurso especial: SQLServerEsuLicense. Este recurso permite habilitar una suscripción de ESU para un conjunto de hosts físicos con un número ilimitado de máquinas virtuales que ejecutan las instancias de SQL Server fuera de soporte técnico. Para obtener más información sobre el modelo de licencias, vea Suscripción a ESU de SQL Server por núcleos físicos con virtualización ilimitada.

Requisitos previos

El rol RBAC incluye los siguientes permisos:

  • 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

Creación del recurso de licencia de ESU de SQL Server

Para crear el recurso de licencia de ESU de SQL Server, use uno de los métodos siguientes:

  1. Seleccione Azure Arc.
  2. En Servicios de datos, seleccione Licencias de ESU de SQL Server.
  3. Seleccione + Crear.
  4. Complete el asistente para la instalación.

Actualización del recurso de licencia de ESU de SQL Server

Para cambiar las propiedades de licencia de ESU de SQL Server, por ejemplo, para terminar la suscripción, use uno de los métodos siguientes:

  1. Seleccione Azure Arc.
  2. En Servicios de datos, seleccione Licencias de ESU de SQL Server.
  3. Seleccione la licencia.
  4. Seleccione Configurar en Administración.
  5. Realice los cambios y a continuación seleccione Aplicar.

Administración de recursos en el ámbito de la licencia de núcleo físico de ESU

Puede administrar los recursos en el ámbito de una licencia de ESU de SQL Server específica mediante los pasos siguientes:

  1. Seleccione Azure Arc.
  2. En Servicios de datos, seleccione Licencias de ESU de SQL Server.
  3. Seleccione la licencia.
  4. Seleccione Recursos en el ámbito en Administración.

En esta vista solo se muestran las máquinas conectadas en el ámbito que hospedan una instancia de SQL Server fuera del servicio con la versión que coincide con la de la licencia de ESU de núcleo físico que administra. Si los recursos específicos no están configurados para usar esta licencia (en la columna Aplicar licencia de núcleo físico se muestra NO), puede cambiarlo:

  1. Seleccione los recursos específicos en la lista.
  2. Seleccione Suscribirse a ESU para suscribirse o seleccione Cancelar la suscripción de ESU para cancelar la suscripción.
  3. Lea el aviso de declinación de responsabilidades y seleccione Confirmar.

Enumeración de servidores habilitados para Azure Arc en el ámbito de la licencia de ESU de SQL Server

En esta consulta se enumeran todos los servidores habilitados para Azure Arc en el ámbito de la licencia y las propiedades pertinentes de cada uno:

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