Compartilhar via


Configurar o SQL Server habilitado pelo Azure Arc

Aplica-se a: SQL Server

Cada servidor habilitado para o Azure Arc inclui um conjunto de propriedades que se aplicam a todas as instâncias do SQL Server instaladas nesse servidor. Você poderá configurar essas propriedades depois que a extensão do Azure para SQL Server for instalada no computador. No entanto, as propriedades só terão efeito se uma ou mais instâncias do SQL Server estiverem instaladas. No portal do Azure, a visão geral do SQL Server habilitado pelo Azure Arc reflete como a configuração do SQL Server afeta uma instância específica.

Pré-requisitos

Registrar provedores de recursos

Para registrar os provedores de recursos, use um dos seguintes métodos:

  1. Selecione Assinaturas
  2. Escolha sua assinatura
  3. Em Configurações, selecione Provedores de recursos
  4. Procure por Microsoft.AzureArcData e Microsoft.HybridCompute, em seguida, selecione Registrar

Modificar a configuração do SQL Server

Você pode usar o portal do Azure, o PowerShell ou a CLI para alterar todas ou algumas configurações em um servidor específico habilitado para o Arc para o estado desejado.

Para modificar a configuração do SQL Server para um escopo maior, como um grupo de recursos, uma assinatura ou várias assinaturas com um único comando, use o script modify-license-type.ps1 do PowerShell. Ele é publicado como um exemplo de código aberto do SQL Server e inclui as instruções passo a passo.

Dica

Execute o script do Azure Cloud Shell porque:

  • Ele tem os módulos necessários do Azure PowerShell pré-instalados
  • Ele autentica você automaticamente

Para obter detalhes, confira Executar o script usando Cloud Shell.

Há duas maneiras de configurar o host do SQL Server no portal do Azure.

  • Abra a página de visão geral do servidor habilitado para o Arc e selecione Configuração do SQL Server, conforme mostrado.

    Captura de tela de um SQL Server habilitado pelo Azure Arc no portal do Azure.

    Ou

  • Abra a página de visão geral do SQL Server habilitado para Arc e selecione Propriedades. Em Configuração do SQL Server, selecione a configuração que deve ser modificada:

    • Tipo de licença
    • Assinatura do ESU
    • Atualizações automáticas

    Captura de tela da configuração de instância do SQL Server do portal do Azure.

Definir a propriedade de tipo de licença

Escolha um dos tipos de licença. Confira Tipos de licença para obter descrições.

Usar licença de núcleo físico

Marque esta caixa de seleção se estiver configurando uma máquina virtual e estiver utilizando o benefício ilimitado de virtualização para licenciar o software SQL Server ou sua assinatura SQL. Ele definirá a propriedade de configuração do host UsePhysicalCoreLicense como True. Se selecionada, a licença de núcleo físico terá precedência e os custos de software do SQL Server serão anulados.

Importante

Se a licença de núcleo físico estiver configurada com um plano de cobrança pré-pago, o Tipo de licença selecionado deverá ser definido como pagamento conforme o uso. Isso não desencadeará cobranças adicionais no nível da VM, mas garantirá o licenciamento e a cobrança ininterruptos em um caso de desativação ou exclusão da licença de núcleo físico.

Assinar a Atualização de Segurança Estendida

Atualizações de Segurança Estendidas (ESU) estão disponíveis para instâncias qualificadas do SQL Server que usam Licença com Software Assurance ou Pagamento conforme o uso como tipo de licença. Selecione Assinar Atualizações de Segurança Estendidas. A assinatura será ativada depois que você clicar em Salvar.

Observação

  • Para ativar uma assinatura da ESU, o tipo de licença deve ser definido como Pagamento conforme o uso ou Licença com Software Assurance. Se estiver definido como Somente licença, as opções de Atualizações de Segurança Estendidas serão desabilitadas.
  • Se a ESU estiver habilitada, o Tipo de Licença não poderá ser alterado para LicenseOnly até que a assinatura da ESU seja cancelada.

Usar licença ESU de núcleo físico

Marque esta caixa de seleção se estiver configurando uma máquina virtual e estiver utilizando o benefício de virtualização ilimitada ao habilitar a assinatura ESU. Ela define UseEsuPhysicalCoreLicense como true. Se selecionada, a licença de núcleo físico terá precedência e as cobranças de ESU do SQL Server em nível de VM serão anuladas.

Cancelar a assinatura de Atualizações de Segurança Estendidas

Você pode cancelar as Atualizações de Segurança Estendidas habilitadas pelo Azure Arc a qualquer momento. O cancelamento interrompe imediatamente os encargos da ESU. Selecione Cancelar assinatura de Atualizações de Segurança Estendidas. A assinatura será encerrada depois que você clicar em Salvar.

Adicionar à lista de instâncias excluídas

Você pode excluir determinadas instâncias das operações de integração em grande escala conduzidas pela política do Azure ou por processos de integração automática. Para excluir instâncias específicas dessas operações, adicione os nomes das instâncias à lista Ignorar Instâncias. Para obter detalhes sobre as opções de integração em grande escala, consulte Opções alternativas de implantação para o SQL Server habilitado pelo o Azure Arc.

Cuidado

As instâncias do SQL Server que usam o Pagamento Conforme o Uso (PAYG) não podem ser excluídas.

Salvar a configuração atualizada

Depois de verificar o tipo de licença, a configuração de ESU e qualquer instância a ser excluída, selecione Salvar para aplicar as alterações.

Importante

O benefício de virtualização ilimitada para software do SQL Server ou assinatura ESU do SQL Server não é válido na infraestrutura dos provedores listados. Se você estiver executando o SQL Server na VM de um provedor listado e selecionar essa opção, sua intenção será ignorada e você será cobrado pelos núcleos virtuais da VM. Consulte Provedores listados para obter detalhes.

Assinar as Atualizações de Segurança estendidas em escala usando a Azure Policy

É possível ativar a assinatura do ESU em vários computadores habilitados para Arc usando uma definição do Azure Policy chamada Inscrever instâncias qualificadas de SQL Server habilitadas para Arc em Atualizações de Segurança Estendidas. Quando você cria uma atribuição dessa definição de política a um escopo de sua escolha, ela habilita o ESU em todos os computadores habilitados para Arc que têm instalada a extensão do Azure para SQL Server. Se qualquer um desses computadores tiver uma instância do SQL Server qualificada, a assinatura ESU é ativada imediatamente.

Siga estas etapas para ativar essa política:

  1. Navegue até Azure Policy no portal do Azure e escolha Definições.
  2. Procure por Inscrever instâncias qualificadas do SQL Server habilitadas para Arc em Atualizações de Segurança Estendidas e clique com o botão direito do mouse na política.
  3. Selecione Atribuir política.
  4. Selecione uma assinatura e, opcionalmente, um grupo de recursos como escopo.
  5. Verifique se a Imposição de política está definida como Habilitada.
  6. Na guia Parâmetros, defina o valor de Habilitar Atualizações de Segurança Estendidas como True.
  7. Na guia Correção:
    1. Selecione Criar tarefa de correção para que essa política seja aplicada aos recursos existentes. Se não for selecionada, a política será aplicada somente aos recursos recém-criados.
    2. Escolha Criar identidade gerenciada e Identidade gerenciada atribuída pelo sistema (recomendado) ou Identidade gerenciada atribuída pelo usuário, que tem permissões de Extensão do Azure para Implantação do SQL Server. e de Leitor.
    3. Selecione a localização da identidade.
  8. Selecione Examinar + criar.
  9. Selecione Criar.

Consultar a configuração do SQL Server

Você pode usar o Azure Resource Graph para consultar as configurações do SQL Server dentro de um escopo selecionado. Consulte os exemplos a seguir.

Contagem por tipo de licença

Este exemplo retorna a contagem por tipo de licença.

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)

Identificar instâncias em que o tipo de licença é indefinido

Essa consulta retorna uma lista de instâncias em que o tipo de licença é nulo.

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

Listar detalhes de configuração para cada instância do SQL Server

Essa consulta identifica vários detalhes sobre cada instância, incluindo o tipo de licença, as configurações de ESU e os recursos habilitados.

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

Listar servidores habilitados pelo Arc com instâncias do SQL Server

Essa consulta identifica os servidores habilitados pelo Azure Arc com instâncias do SQL Server detectadas neles.

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

Essa consulta retorna os servidores habilitados pelo Azure Arc que têm instâncias do SQL Server, mas a extensão do SQL Server do Arc não está instalada. Essa consulta se aplica apenas a servidores 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 obter mais exemplos de Consultas do Azure Resource Graph, confira Exemplos de consultas do Resource Graph para iniciantes.

Listar instâncias do SQL Server habilitadas para Arc com assinaturas ESU

O exemplo a seguir mostra como você pode exibir todas as instâncias qualificadas do SQL Server 2012 (11.x) e o status da assinatura da 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

Listar servidores habilitados para Arc que hospedam uma instância do SQL Server cobrável

Essa consulta identifica as máquinas (virtuais ou físicas) que hospedam instâncias do SQL Server que são faturáveis ou exigem uma licença para o software do SQL Server. Ele fornece os detalhes da configuração do SQL Server, incluindo o tipo de licença, configuração de ESU, tamanho em núcleos virtuais ou físicos e outros parâmetros relevantes.

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

Gerenciar benefício da virtualização ilimitada para o SQL Server

Para habilitar a virtualização ilimitada, o SQL Server habilitado pelo Azure Arc oferece suporte a um tipo de recurso especial: SQLServerLicense. Esse recurso permite que você licencie muitas máquinas virtuais com as instâncias do SQL Server instaladas. Para obter detalhes do modelo de licenciamento, consulte Licenciando instâncias do SQL Server com virtualização ilimitada.

Pré-requisitos

Sua função RBAC inclui as seguintes permissões:

  • 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

Criar licença do SQL Server

Para criar o recurso de licença do SQL Server, use um dos seguintes métodos:

  1. Selecione o Azure Arc
  2. Em Serviços de Dados, selecione Licenças do SQL Server
  3. Selecione +Criar
  4. Selecione Licença de núcleo físico do SQL Server
  5. Concluir o assistente de criação

Atualizar recurso de licença do SQL Server

Para alterar a propriedade da licença do SQL Server, por exemplo, ativá-la posteriormente, use um dos seguintes métodos:

  1. Selecione o Azure Arc
  2. Em Serviços de Dados, selecione Licenças do SQL Server
  3. Selecione a licença em questão
  4. Selecione Configurar em Gerenciamento
  5. Faça as alterações e selecione Aplicar

Gerenciar recursos no escopo da licença de núcleos físicos

Você pode gerenciar os recursos no escopo de uma licença de núcleo físico específica do SQL Server usando as seguintes etapas:

  1. Selecione o Azure Arc
  2. Em Serviços de Dados, selecione Licenças do SQL Server
  3. Selecione a licença em questão
  4. Selecionar Recursos no escopo em Gerenciamento

Se os recursos específicos não estiverem configurados para usar esta licença (a coluna Aplicar licença física principal exibe "NÃO"), você poderá alterar essa opção:

  1. Selecione os recursos específicos na lista
  2. Selecione a guia Aplicar licença
  3. Leia o aviso de isenção de responsabilidade e selecione Confirmar

Listar servidores habilitados para Arc no escopo da licença do SQL Server

Esta consulta lista todos os servidores habilitados para Azure Arc no escopo da licença e as propriedades relevantes de cada um.

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

Gerenciar benefício da virtualização ilimitada para assinatura ESU do SQL Server

Para habilitar a virtualização ilimitada para a assinatura ESU, o SQL Server habilitado pelo Azure Arc oferece suporte a um tipo de recurso especial: SQLServerEsuLicense. Esse recurso permite habilitar uma assinatura ESU para um conjunto de hosts físicos com número ilimitado de máquinas virtuais executando as instâncias do SQL Server fora de suporte. Para obter detalhes do modelo de licenciamento, consulte Licenciando instâncias do SQL Server com virtualização ilimitada.

Pré-requisitos

Sua função RBAC inclui as seguintes permissões:

  • 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

Criar recurso de licença ESU do SQL Server

Para criar o recurso de licença ESU do SQL Server, use um dos seguintes métodos:

  1. Selecione o Azure Arc
  2. Em Serviços de Dados, selecione Licenças ESU do SQL Server
  3. Selecione +Criar
  4. Concluir o assistente de criação

Atualizar recurso de licença ESU do SQL Server

Para alterar as propriedades da licença ESU do SQL Server, por exemplo, terminar a assinatura, use um dos seguintes métodos:

  1. Selecione o Azure Arc
  2. Em Serviços de Dados, selecione Licenças ESU do SQL Server
  3. Selecione a licença em questão
  4. Selecione Configurar em Gerenciamento
  5. Faça as alterações e selecione Aplicar

Gerenciar recursos no escopo da licença ESU de núcleos físicos

Você pode gerenciar os recursos no escopo da licença ESU de um SQL Server específico usando as seguintes etapas:

  1. Selecione o Azure Arc
  2. Em Serviços de Dados, selecione Licenças ESU do SQL Server
  3. Selecione a licença em questão
  4. Selecionar Recursos no escopo em Gerenciamento

Essa exibição mostrará apenas as máquinas conectadas no escopo que hospedam uma instância do SQL Server fora de serviço com a versão que corresponde à versão da licença ESU de núcleos físicos que você está gerenciando. Se os recursos específicos não estiverem configurados para usar esta licença (a coluna Licença de núcleo físico aplicada exibe "NÃO"), você poderá alterar essa opção:

  1. Selecione os recursos específicos na lista
  2. Selecione a guia Assinar ESUs para assinar ou Cancelar assinatura de ESUs para cancelar a assinatura.
  3. Leia o aviso de isenção de responsabilidade e selecione Confirmar

Listar servidores habilitados para Arc no escopo da licença ESU do SQL Server

Esta consulta lista todos os servidores habilitados para Azure Arc no escopo da licença e as propriedades relevantes de cada um.

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