Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
SQL Server em Máquinas Virtuais do Azure
SQL Server habilitado pelo Azure Arc
Este artigo descreve como:
- Revise e faça a transição de múltiplos produtos SQL para licenciamento pay-as-you-go com um único script PowerShell.
- Aplique continuamente o licenciamento pay-as-you-go para um tipo de recurso com o Azure Policy.
A automação neste artigo se aplica ao SQL Server habilitado pelo Azure Arc, SQL Server em Máquinas Virtuais do Azure, Banco de Dados SQL do Azure, e Instância Gerenciada de SQL do Azure. O script também pode processar um Azure-SSIS Integration Runtime em Azure Data Factory (Azure-SSIS IR).
Alterar um acordo de licenciamento não altera o tipo de licença configurado para seus recursos SQL. Os fluxos de trabalho deste artigo ajudam você a migrar os recursos para a cobrança pay-as-you-go quando as licenças do SQL com Software Assurance, as licenças de assinatura do SQL ou o Service Provider License Agreement (SPLA) deixarem de se aplicar.
Pré-requisitos
- Uma conta Azure com acesso ao tenant e assinaturas que contêm os recursos SQL.
- PowerShell 5 ou versões posteriores com o módulo PowerShell do Arizona.
- CLI do Azure quando você usa o script do PowerShell para atualizar recursos SQL.
- O papel do Contribuidor em cada assinatura que você modifica. Para alternativas de privilégio mínimo, revise as permissões por tipo de recurso.
- Para o modo agendado, permissão para criar atribuições de funções no escopo da assinatura de destino ou as funções necessárias previamente atribuídas à identidade gerenciada da conta de Automação.
- A autoridade para alterar as configurações de faturamento e atestar os termos de licenciamento para os recursos-alvo.
Para evitar instalar as ferramentas localmente, execute o script no Azure Cloud Shell. O Cloud Shell inclui o Azure PowerShell e a CLI do Azure e autentica a sessão. Especifique -TenantId quando sua conta pode acessar mais de um inquilino.
Escolha um método de automação
Escolha entre:
- PowerShell para transições entre recursos para licenciamento de pagamento conforme o uso.
- Azure Policy para aplicação contínua de pagamento conforme o uso para um tipo de recurso.
A tabela a seguir fornece detalhes sobre cada método de automação:
| Scenario | Método recomendado |
|---|---|
| Revise ou aplique mudanças pay-as-you-go em vários tipos de recursos SQL | manage-payg-transition.ps1 |
| Migre todos os recursos compatíveis em uma assinatura ou locatário para o licenciamento de pagamento conforme o uso | manage-payg-transition.ps1 |
| Faça uma transição de pagamento conforme o uso em um cronograma recorrente |
manage-payg-transition.ps1 no modo programado |
| Impor continuamente o licenciamento de pagamento conforme o uso para um tipo de recurso e corrigir desvios | Um exemplo específico de recurso do Azure Policy |
| Altere um recurso manualmente | O artigo sobre licenciamento específico de produto |
Revise recursos suportados e valores de licença
Os procedimentos neste artigo definem -TargetLicenseType para PAYG. O script traduz esse valor para o valor pay-as-you-go exigido por cada provedor de recursos. Os valores de origem mostram configurações comuns de licença que a transição pode substituir.
| Resource | Valor alvo pré-pago | Valores de fonte comuns | Apoiado pelo script | Exemplo do Azure Policy |
|---|---|---|---|---|
| SQL Server habilitado pelo Azure Arc | PAYG |
Paid, LicenseOnly |
Sim | Conformidade com tipos de licença SQL Server habilitados por Arc |
| SQL Server em Máquinas Virtuais do Azure | PAYG |
AHUB |
Sim | Conformidade com tipos de licença do SQL Server on Azure VMs |
| Banco de Dados SQL do Azure e pools elásticos | LicenseIncluded |
BasePrice |
Sim | Conformidade do tipo de licença do Banco de Dados SQL do Azure |
| Instância Gerenciada de SQL do Azure e pools de instâncias | LicenseIncluded |
BasePrice, HybridFailoverRights |
Sim | Conformidade com o tipo de licença Instância Gerenciada de SQL |
| Azure-SSIS IR | LicenseIncluded |
BasePrice |
Sim | Não abordado neste artigo |
Os exemplos de políticas podem sobrescrever valores de origem adicionais, como DR para SQL Server em VMs do Azure. Revise a amostra selecionada antes de implantar uma tarefa de política.
Entenda como funciona o script PowerShell
Você pode usar o script PowerShell para modificar todos os recursos dentro de um grupo de recursos, todos os recursos dentro de uma assinatura e todos os recursos de uma ou mais assinaturas dentro de um inquilino inteiro.
O script é autônomo e funciona entre os recursos SQL suportados. Quando -TargetLicenseType está definido para o padrão PAYG, ele traduz esse valor para o valor pay-as-you-go exigido por cada tipo de recurso, conforme mostrado em Recursos suportados pela Review e valores de licença.
Por padrão, a pasta funcional gerada permanece após o término do script. Para removê-lo após uma execução, especifique -cleanDownloads $true.
O script exibe um resumo por tipo de recurso e lista a causa de cada recurso que falhou ou foi ignorado. Quando o script encontra recursos correspondentes, ele também cria um relatório ModifiedResources_<timestamp>.csv com colunas UpdateResult e UpdateError.
Os seguintes parâmetros controlam o escopo e a execução do script:
| Parâmetro | Valor aceito ou padrão | Purpose |
|---|---|---|
-Target |
Arc, Azure, ou Both (padrão) |
Seleciona SQL Server habilitado por recursos Azure Arc, recursos SQL do Azure e Azure-SSIS IR, ou ambos os grupos. |
-RunMode |
Single (padrão) ou Scheduled |
Executa a transição uma vez ou configura runbooks diários do Automação do Azure. |
-TargetLicenseType |
PAYG |
Seleciona o modelo de licença pay-as-you-go como modelo de licença alvo para os procedimentos deste artigo. |
-targetSubscription |
ID de assinatura; todas as assinaturas acessíveis no tenant por padrão | Limita a transição a uma assinatura. |
-targetResourceGroup |
Nome do grupo de recursos; todos os grupos de recursos por padrão | Limita a transição a um único grupo de recursos. |
-TenantId |
ID do Inquilino; contexto atual do PowerShell do Arizona por padrão | Seleciona o inquilino Microsoft Entra. |
-ReportOnly |
Switch; desativado por padrão | Reporta recursos qualificados sem alterá-los. |
-WaitForCompletion |
Switch; desativado por padrão | Aguarda que as mudanças submetidas atinjam um estado terminal quando suportadas. |
-UsePcoreLicense |
No (padrão) ou Yes |
Controla o licenciamento por núcleo físico do SQL Server habilitado para Azure Arc. |
-AutomationAccResourceGroupName |
Exigido com -RunMode Scheduled |
Seleciona o grupo de recursos para a conta de Automação. |
-AutomationAccountName |
aaccAzureArcSQLLicenseType por padrão |
Define o nome da conta de Automação. |
-Location |
Exigido com -RunMode Scheduled |
Seleciona a região do Azure para a conta de Automação e o grupo de recursos. |
-cleanDownloads |
$false (padrão) ou $true |
Remove a pasta de trabalho gerada depois que o script termina. |
O comportamento padrão de execução depende do tipo de recurso:
| Resource | Comportamento padrão | Com -WaitForCompletion |
|---|---|---|
| Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure | Submete uma solicitação assíncrona e reporta RequestSubmitted |
Esperas e relatórios Updated |
| SQL Server habilitado pelo Azure Arc | Submete uma atualização de extensão assíncrona e reporta RequestSubmitted |
Pesquisa a extensão e reporta Succeeded, Failed, ou TimedOut |
| SQL Server em Máquinas Virtuais do Azure | Envia uma solicitação direta no Azure Resource Manager e reportaRequestSubmitted |
Executa az sql vm update, aguarda e relata Updated |
| Azure-SSIS IR | Esperas e relatórios Updated |
Mesmo comportamento |
Visualize a transição para pagamento conforme o uso
O manage-payg-transition.ps1 script fornece um ponto de entrada para SQL do Azure e SQL Server habilitados pelos recursos do Azure Arc.
Com o script PowerShell, você pode especificar uma única assinatura para escanear. Se você não especificar uma assinatura, o script verifica todas as assinaturas às quais sua função pode acessar.
Baixe o script:
$scriptUri = "https://raw.githubusercontent.com/microsoft/sql-server-samples/master/samples/manage/manage-payg-transition/manage-payg-transition.ps1" Invoke-WebRequest -Uri $scriptUri -OutFile ".\manage-payg-transition.ps1"Faça login no locatário que contém os recursos:
Connect-AzAccount -TenantId "<tenant-id>"Execute uma prévia somente leitura para uma única assinatura. Especifique
-TenantIdmesmo quando você já tem um contexto do Azure para que o script não use o inquilino errado:.\manage-payg-transition.ps1 ` -Target Both ` -TenantId "<tenant-id>" ` -targetSubscription "<subscription-id>" ` -TargetLicenseType PAYG ` -ReportOnlySe o script encontrar recursos correspondentes, abra o relatório
ModifiedResources_<timestamp>.csvmais recente. Confirme que todos os recursos listados devem mudar:$report = Get-ChildItem -Filter "ModifiedResources_*.csv" | Sort-Object LastWriteTime -Descending | Select-Object -First 1 Import-Csv $report.FullName | Format-Table
Recursos que já utilizam licença pay-as-you-go não aparecem no relatório. Se o script não encontrar recursos correspondentes, ele não cria um arquivo CSV. Para reduzir o escopo, especifique -targetResourceGroup. Defina -Target como Azure para processar recursos do SQL do Azure e o Azure-SSIS IR. Defina como Arc para processar apenas os recursos do SQL Server habilitados pelo Azure Arc.
Realize uma transição única de pagamento conforme uso com o PowerShell
Execute a transição pay-as-you-go somente depois de confirmar o escopo alvo e aprovar todos os recursos no relatório de prévia.
Remova
-ReportOnly, e adicione-WaitForCompletionpara esperar por resultados confirmados onde o provedor de recursos os apoia:.\manage-payg-transition.ps1 ` -Target Both ` -TenantId "<tenant-id>" ` -targetSubscription "<subscription-id>" ` -TargetLicenseType PAYG ` -WaitForCompletionRevise o relatório CSV gerado. Investigue cada resultado
FailedouTimedOute confirme o estado do recurso para cada alteração submetida.
O valor PAYG define pay-as-you-go como o modelo de licença de destino.
Se você omitir -WaitForCompletion, a maioria das alterações aceitas possui um UpdateResult de RequestSubmitted. Esse resultado significa que o Azure aceitou a solicitação, não que o tipo de licença terminou de mudar. Azure-SSIS IR sempre espera porque seu comando update não suporta execução assíncrona.
Programe transições recorrentes de pagamento conforme o uso usando o PowerShell
O modo agendado cria ou atualiza um runbook do Automação do Azure para cada alvo selecionado, vincula cada runbook a um cronograma diário e inicia um trabalho único imediatamente. Informe o grupo de recursos da conta de Automação e a região do Azure. O nome padrão da conta de Automação é aaccAzureArcSQLLicenseType. O modo Agendado usa a identidade gerenciada da conta de Automação.
Agende a transição para SQL do Azure e SQL Server habilitados pelos recursos do Azure Arc em uma única assinatura:
.\manage-payg-transition.ps1 ` -Target Both ` -RunMode Scheduled ` -TenantId "<tenant-id>" ` -targetSubscription "<subscription-id>" ` -TargetLicenseType PAYG ` -AutomationAccResourceGroupName "<automation-resource-group>" ` -AutomationAccountName "<automation-account>" ` -Location "<azure-region>"Na conta de Automação, confirme que os runbooks estão publicados, vinculados a um cronograma diário e que é possível iniciar um trabalho com os parâmetros selecionados.
Se o destino do Azure incluir pools de Instância Gerenciada de SQL, atribua à identidade gerenciada da conta de Automação a função Contributor ou uma função personalizada com Microsoft.Sql/instancePools/read e Microsoft.Sql/instancePools/write. A configuração programada não atribui um papel embutido que conceda essas permissões.
Aplicar o licenciamento conforme o uso com o Azure Policy
Use um exemplo de Política do Azure específico para o recurso para aplicar continuamente o licenciamento conforme o uso e corrigir desvios de configuração. Cada exemplo contém uma definição de política, um script de implantação e um script de remediação.
Warning
Uma atribuição de política pode alterar todos os recursos correspondentes em seu escopo. Comece com uma assinatura de teste com escopo restrito e selecione apenas os tipos de licença atuais que pretende substituir.
A tabela a seguir vincula o pacote de políticas e o script de implantação de cada recurso:
| Resource | Pacote de políticas | Script de implantação |
|---|---|---|
| SQL Server habilitado pelo Azure Arc | Conformidade com tipos de licença SQL Server habilitados por Arc | deployment.ps1 |
| SQL Server em Máquinas Virtuais do Azure | Conformidade com tipos de licença do SQL Server on Azure VMs | deployment.ps1 |
| Instância Gerenciada de SQL do Azure | Conformidade com o tipo de licença Instância Gerenciada de SQL | deployment.ps1 |
| Banco de Dados SQL do Azure | Conformidade do tipo de licença do Banco de Dados SQL do Azure | deployment.ps1 |
Use os valores e papéis para o tipo de recurso selecionado:
| Resource | Valor alvo pay-as-you-go | Valores fonte que podem ser sobrescritos | Função principal obrigatória | Limitação importante |
|---|---|---|---|---|
| SQL Server habilitado pelo Azure Arc | PAYG |
Paid; A definição do portal também suporta LicenseOnly |
Azure Extension para Implantação do SQL Server | A atribuição aplica um alvo a todos os hosts correspondentes e não é consciente da edição. Defina o escopo dos ambientes mistos separadamente. |
| SQL Server em Máquinas Virtuais do Azure | PAYG |
AHUB, DR |
Colaborador de Máquina Virtual | O destino deve atender às condições de licenciamento do Benefício Híbrido do Azure ou às condições de licenciamento para alta disponibilidade passiva ou recuperação de desastres (HA/DR). |
| Instância Gerenciada de SQL do Azure | LicenseIncluded |
BasePrice, HybridFailoverRights |
Instância Gerenciada de SQL Contributor |
HybridFailoverRights define licenseType como BasePrice e hybridSecondaryUsage como Passive. |
| Banco de Dados SQL do Azure | LicenseIncluded |
BasePrice |
Colaborador do banco de dados SQL | A política exclui master e bancos de dados Basic. O Banco de Dados SQL do Azure oferece suporte a alterações no tipo de licença apenas para bancos de dados com vCore provisionado, portanto exclua ou isente da atribuição outros bancos de dados baseados em unidades de transação de banco de dados (DTU) e bancos de dados serverless. |
Cada tarefa também precisa de Leitor e Contribuidor de Política de Recursos. Os scripts de implantação concedem os papéis necessários quando a identidade logada tem permissão para criar atribuições de papéis. Use -GrantMissingPermissions com o script de remediação para verificar e adicionar papéis ausentes.
Os scripts de implantação SQL VM, Instância Gerenciada de SQL e SQL Database solicitam confirmação quando o valor alvo requer uma atestação de licenciamento.
-SkipLicenseConfirmation Use apenas em um pipeline automatizado onde o operador já confirmou a elegibilidade e assume a responsabilidade pela conformidade.
Para o SQL Server habilitado para Arc, uma política PAYG também configura o consentimento para faturamento recorrente. O consentimento permanece associado à extensão caso uma atribuição posterior altere o tipo de licença, deixando de ser PAYG.
Os pacotes de políticas utilizam um fluxo de implantação compartilhado:
Baixe as pastas
policyescriptsdo pacote seguindo as instruções do README.Faça login no locatário que contém o escopo de atribuição:
Connect-AzAccount -TenantId "<tenant-id>"Da pasta de pacotes baixada, implante a definição e a atribuição. Use o valor alvo pay-as-you-go para seu tipo de recurso da tabela anterior. O exemplo a seguir atribui a política no escopo da assinatura:
.\scripts\deployment.ps1 ` -SubscriptionId "<subscription-id>" ` -TargetLicenseType "<pay-as-you-go-value>"Se você omitir
-SubscriptionId, o script usa o escopo do grupo de gerenciamento. Revise os padrões dos pacotes antes de executar a implantação.Confirme que a atribuição de política possui uma identidade gerenciada atribuída pelo sistema e os papéis exigidos no escopo da atribuição.
Iniciar a remediação para recursos existentes não conformes:
.\scripts\start-remediation.ps1 ` -SubscriptionId "<subscription-id>" ` -TargetLicenseType "<pay-as-you-go-value>" ` -GrantMissingPermissionsNo Azure Policy, revise os resultados de conformidade da atribuição e a tarefa de remediação. Depois, confirme o tipo de licença nos recursos remediados.
Valide a transição para pagamento conforme o uso
O relatório CSV inclui um UpdateResult e um UpdateError para cada recurso selecionado. Interprete os resultados comuns da seguinte forma:
| Result | Meaning | Próxima ação |
|---|---|---|
ReportOnly |
O script identificou um recurso qualificado no modo somente leitura e não enviou nenhuma alteração. | Confirme que o recurso deve usar o licenciamento conforme o uso antes de executar a transição. |
RequestSubmitted |
O Azure aceitou um pedido assíncrono. | Espere a operação de recurso terminar e então valide o estado do recurso. |
Updated ou Succeeded |
O script detectou um resultado final bem-sucedido. | Confirme o tipo de licença do recurso. |
Failed |
O serviço rejeitou a atualização ou retornou um estado de terminal com falha. | Reveja UpdateError, corrija o problema e reexecute a prévia. |
TimedOut |
A extensão do Arc não atingiu um estado terminal antes do limite de votação. | Verifique o estado da extensão. A atualização pode ser concluída depois que o script parar de esperar. |
Para confirmar o tipo de licença atual e o estado de provisionamento do SQL Server habilitado pelo Azure Arc, execute a seguinte consulta Azure Resource Graph:
Search-AzGraph -Query @"
resources
| where type =~ 'microsoft.hybridcompute/machines/extensions'
| where properties.type in~ ('WindowsAgent.SqlServer', 'LinuxAgent.SqlServer')
| project name = split(id, '/')[8],
licenseType = properties.settings.LicenseType,
state = properties.provisioningState
"@
Após o término das operações submetidas, execute novamente o mesmo escopo com -ReportOnly:
.\manage-payg-transition.ps1 `
-Target Both `
-TenantId "<tenant-id>" `
-targetSubscription "<subscription-id>" `
-TargetLicenseType PAYG `
-ReportOnly
O script exclui recursos que já usam licenciamento pay-as-you-go. Um escopo totalmente convergente não reporta recursos para atualização. Investigue qualquer recurso que ainda apareça antes de considerar a transição concluída.
Limitações de revisão e salvaguardas de cobrança
- O SQL Server em VMs do Azure deve estar em execução. O script ignora VMs paradas ou desalocadas e não as inicia.
- O script exclui o SQL Server em VMs do Azure que usam o
DRtipo de licença, então ele não sobrescreve a configuração de licença de uma réplica passiva de HA/DR. - O script não expõe a opção de consentimento para cobrança recorrente de seu manipulador Arc incorporado. Para recursos Arc gerenciados pelo CSP que exigem consentimento de faturamento recorrente, use a política de conformidade com tipos de licença do SQL Server habilitada pelo Arc, que configura o consentimento quando aplica.
PAYG - Uma execução assíncrona padrão favorece a escala em vez da confirmação imediata. Use
-WaitForCompletionquando precisar que o script observe os resultados do terminal antes de ele sair. - Por padrão, as atualizações do SQL Server no Azure VM usam uma requisição assíncrona do Azure Resource Manager. Se essa solicitação falhar, o script volta para
az sql vm update, que espera a operação terminar.
Solucionar falhas de automação
Use o relatório gerado e o status das operações do Azure para identificar recursos que não foram atualizados.
- Se o relatório estiver vazio, confirme o locatário, a assinatura e o grupo de recursos. Espera-se um relatório vazio quando todos os recursos dentro do escopo já utilizam licenciamento pay-as-you-go.
- Se um recurso habilitado por Arc for pulado, restaure a conectividade do agente Azure Connected Machine, confirme que o estado de provisionamento da extensão Azure para SQL Server é
Succeeded, e então execute novamente a prévia. - Se
UpdateResultestiverRequestSubmitted, não trate a solicitação como concluída. Verifique o estado do recurso ou execute novamente a pré-visualização após a operação no Azure terminar. - Se uma operação de SQL do Azure ou SQL Server no Azure VM falhar, confirme que o CLI do Azure está instalado, logado no mesmo tenant e autorizado para a assinatura alvo.
- Se o modo agendado falhar, confirme se a identidade gerenciada da conta de Automação tem as funções listadas no exemplo de código-fonte.
- Se a remediação da política retornar
PolicyAuthorizationFailed, confirme que a identidade da atribuição tem a função específica do produto, Leitor, e Colaborador da Política de Recursos no escopo da atribuição. Execute novamente o script de implantação ou execute novamente o script de correção com-GrantMissingPermissionsdepois que a identidade conectada puder criar atribuições de função.
Para a fonte completa, veja manage-payg-transition.ps1. Para limitações atuais e resultados dos testes, consulte o manage-payg-transition.ps1 plano de teste.
Permissões por tipo de recurso
Permissões para o script PowerShell
O papel Contribuidor é um superconjunto das permissões exigidas pelo script neste artigo e é a opção mais simples. Para acesso com privilégio mínimo, atribua os papéis necessários para os tipos de recursos no escopo:
| Tipo de recurso | Função ou permissões necessárias |
|---|---|
| SQL Server em Máquinas Virtuais do Azure | Colaborador de Máquina Virtual |
| Instância Gerenciada de SQL do Azure | Instância Gerenciada de SQL Contributor |
| Banco de Dados SQL do Azure | Colaborador do banco de dados SQL |
| Banco de Dados SQL do Azure elastic pools | Colaborador do SQL Server |
| pools de Instância Gerenciada do SQL do Azure |
Contribuidor, ou um papel personalizado com Microsoft.Sql/instancePools/read e Microsoft.Sql/instancePools/write |
| SQL Server habilitado pelo Azure Arc | Administrador de recursos de Azure Connected Machine |
| Azure-SSIS IR | Colaborador da fábrica de dados |
| Leitura e enumeração de assinaturas e recursos | Leitor, a menos que outro papel atribuído conceda as permissões de leitura necessárias |
Permissões para o Azure Policy
A identidade que executa deployment.ps1 precisa de permissão para criar definições de políticas no grupo de gestão selecionado e para criar atribuições de políticas, tarefas de remediação, identidades gerenciadas e atribuições de papéis no escopo da atribuição. Se não for possível criar atribuições de função, atribua as funções necessárias à identidade gerenciada da atribuição de política antes de iniciar a remediação e execute deployment.ps1 com -SkipManagedIdentityRoleAssignment.
Por padrão, deployment.ps1 cria uma identidade gerenciada atribuída pelo sistema para a atribuição de políticas e concede três funções no escopo da atribuição. O papel específico do produto depende da amostra de políticas selecionada:
| Exemplo de política | Função específica para produto |
|---|---|
| SQL Server habilitado pelo Azure Arc | Azure Extension para Implantação do SQL Server |
| SQL Server em Máquinas Virtuais do Azure | Colaborador de Máquina Virtual |
| Instância Gerenciada de SQL do Azure | Instância Gerenciada de SQL Contributor |
| Banco de Dados SQL do Azure | Colaborador do banco de dados SQL |
Cada identidade de atribuição de política também requer Leitor e Contribuidor de Política de Recursos. O script de implantação pula a atribuição automática de funções apenas quando você especifica -SkipManagedIdentityRoleAssignment.
Antes de iniciar a remediação, start-remediation.ps1 verifica a identidade da atribuição de política em relação às três funções exigidas. Se um papel estiver faltando, o roteiro para. Atribua as funções manualmente ou execute novamente o script de remediação com -GrantMissingPermissions, usando uma identidade que possa criar atribuições de função no escopo de atribuição.