Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Base de Dados SQL do Azure
Azure SQL Managed Instance
SQL Server nas Máquinas Virtuais do Azure
SQL Server compatível com o Azure Arc
Este artigo descreve como:
- Revise e faça a transição de vários produtos SQL para licenciamento pay-as-you-go com um único script PowerShell.
- Aplicar continuamente o licenciamento pay-as-you-go para um tipo de recurso com o Azure Policy.
A automação neste artigo aplica-se ao SQL Server ativado pelo Azure Arc, SQL Server nas Máquinas Virtuais do Azure, Base de Dados SQL do Azure, e Azure SQL Managed Instance. 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 os seus recursos SQL. Os fluxos de trabalho deste artigo ajudam-no a fazer a transição dos recursos para a faturação consoante a utilização quando as licenças SQL com Software Assurance, as licenças de subscrição do SQL ou o licenciamento ao abrigo do Service Provider License Agreement (SPLA) deixarem de se aplicar.
Pré-requisitos
- Uma conta Azure com acesso ao tenant e subscrições que contenham os recursos SQL.
- PowerShell 5 ou versão posterior com o módulo Az PowerShell.
- A CLI do Azure quando usa o script PowerShell para atualizar recursos SQL.
- O papel do Contribuidor em cada subscrição que modifica. Para alternativas de privilégio mínimo, consulte Permissões por tipo de recurso.
- No modo agendado, permissão para criar atribuições de funções ao nível da subscrição de destino, ou as funções necessárias previamente atribuídas à identidade gerida da conta de Automação.
- A autoridade para alterar as definições de faturação e atestar os termos de licenciamento dos recursos-alvo.
Para evitar instalar as ferramentas localmente, executa 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 a sua conta pode aceder a mais do que um inquilino.
Escolha um método de automação
Escolha entre:
- PowerShell para transições entre recursos para o licenciamento com pagamento consoante a utilização.
- Azure Policy para imposição contínua do pagamento consoante a utilização para um tipo de recurso.
A tabela seguinte fornece detalhes sobre cada método de automação:
| Scenario | Método recomendado |
|---|---|
| Revise ou aplique alterações pay-as-you-go em vários tipos de recursos SQL | manage-payg-transition.ps1 |
| Transite todos os recursos suportados numa subscrição ou tenant para licenciamento de pagamento conforme a utilização | manage-payg-transition.ps1 |
| Faz uma transição pay-as-you-go num calendário recorrente |
manage-payg-transition.ps1 em modo programado |
| Aplicar continuamente o licenciamento de pagamento conforme a utilização a um tipo de recurso e corrigir desvios | Um exemplo de Azure Policy específico de um recurso |
| Alterar manualmente um recurso | 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 este valor para o valor pay-as-you-go exigido por cada fornecedor de recursos. Os valores de origem mostram configurações comuns de licença que a transição pode substituir.
| Resource | Valor alvo de pagamento conforme a utilização | Valores de origem comuns | Apoiado pelo script | Exemplo do Azure Policy |
|---|---|---|---|---|
| SQL Server ativado pelo Azure Arc | PAYG |
Paid, LicenseOnly |
Sim | Conformidade com o tipo de licença SQL Server habilitado por Arc |
| SQL Server em Máquinas Virtuais do Azure | PAYG |
AHUB |
Sim | Conformidade do tipo de licença do SQL Server em Azure VMs |
| Base de Dados SQL do Azure e conjuntos elásticos | LicenseIncluded |
BasePrice |
Sim | Conformidade do tipo de licença do Base de Dados SQL do Azure |
| Azure SQL Managed Instance e pools de instâncias | LicenseIncluded |
BasePrice, HybridFailoverRights |
Sim | Conformidade com o tipo de licença SQL Managed Instance |
| 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 o SQL Server em VMs do Azure. Reveja a amostra selecionada antes de implementar uma atribuição de política.
Compreenda como funciona o script PowerShell
Pode usar o script PowerShell para modificar todos os recursos dentro de um grupo de recursos, todos os recursos de uma subscrição e todos os recursos de uma ou mais subscrições 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, traduz esse valor para o valor pay-as-you-go exigido por cada tipo de recurso, conforme mostrado nos recursos suportados pela Review e nos valores da licença.
Por defeito, a pasta de trabalho gerada mantém-se após o script terminar. Para o remover após uma execução, especifique -cleanDownloads $true.
O script imprime um resumo por tipo de recurso e lista a causa de cada recurso falhado ou ignorado. Quando o script encontra recursos correspondentes, cria também um relatório ModifiedResources_<timestamp>.csv com colunas UpdateResult e UpdateError.
Os seguintes parâmetros controlam o âmbito e a execução do script:
| Parameter | Valor aceite ou incumprimento | Purpose |
|---|---|---|
-Target |
Arc, Azure, ou Both (padrão) |
Seleciona SQL Server ativado por recursos Azure Arc, recursos SQL do Azure e Azure-SSIS IR, ou ambos os grupos. |
-RunMode |
Single (predefinido) ou Scheduled |
Executa a transição uma vez ou configura runbooks diários do Automatização do Azure. |
-TargetLicenseType |
PAYG |
Seleciona o modelo de licença pay-as-you-go como alvo para os procedimentos deste artigo. |
-targetSubscription |
ID de subscrição; todas as subscrições acessíveis no tenant por defeito | Limita a transição a uma subscrição. |
-targetResourceGroup |
Nome do grupo de recursos; todos os grupos de recursos predefinidos | Limita a transição a um único grupo de recursos. |
-TenantId |
ID do Locatário; contexto atual do Az PowerShell por defeito | Seleciona o tenant do Microsoft Entra. |
-ReportOnly |
Switch; desativado por predefinição | Apresenta recursos elegíveis sem os alterar. |
-WaitForCompletion |
Switch; desativado por defeito | Aguarda que as alterações submetidas atinjam um estado terminal quando suportadas. |
-UsePcoreLicense |
No (predefinido) ou Yes |
Controla o licenciamento por núcleo físico do SQL Server habilitado pelo Azure Arc. |
-AutomationAccResourceGroupName |
Obrigatório com -RunMode Scheduled |
Seleciona o grupo de recursos para a conta de Automação. |
-AutomationAccountName |
aaccAzureArcSQLLicenseType por defeito |
Define o nome da conta de Automação. |
-Location |
Obrigatório com -RunMode Scheduled |
Seleciona a região Azure para a conta de Automação e o grupo de recursos. |
-cleanDownloads |
$false (predefinido) ou $true |
Remove a pasta de trabalho gerada depois do script terminar. |
O comportamento de execução por defeito depende do tipo de recurso:
| Resource | Comportamento padrão | Com -WaitForCompletion |
|---|---|---|
| Base de Dados SQL do Azure, Instância Gerida do SQL do Azure | Submete um pedido assíncrono e reporta RequestSubmitted |
Esperas e relatórios Updated |
| SQL Server ativado pelo Azure Arc | Submete uma atualização de extensão assíncrona e reporta RequestSubmitted |
Sonda a extensão e reporta Succeeded, Failed, ou TimedOut |
| SQL Server em Máquinas Virtuais do Azure | Submete um pedido direto do Azure Resource Manager e reportaRequestSubmitted |
Executa atualizações de VM SQL do Az, espera e reportaUpdated |
| Azure-SSIS IR | Esperas e relatórios Updated |
Mesmo comportamento |
Pré-visualizar a transição para pagamento conforme a utilização
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, podes especificar uma única subscrição para escanear. Se não especificares uma subscrição, o script analisa todas as subscrições a que a tua função pode aceder.
Descarregue 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"Inicie sessão no diretório que contém os recursos:
Connect-AzAccount -TenantId "<tenant-id>"Execute uma pré-visualização apenas de leitura para uma única subscrição. Especifica
-TenantIdmesmo quando já tens um contexto no 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 licenciamento pay-as-you-go não aparecem no relatório. Se o script não encontrar recursos correspondentes, não cria um ficheiro CSV. Para reduzir o âmbito, especifique -targetResourceGroup. Defina -Target como Azure para processar recursos do SQL do Azure e do Azure-SSIS IR. Defina-o como Arc para processar apenas os recursos do SQL Server habilitados pelo Azure Arc.
Execute uma transição pontual para pagamento conforme a utilização com o PowerShell
Execute a transição pay-as-you-go apenas depois de confirmar o âmbito alvo e aprovar todos os recursos no relatório de pré-visualização.
Remova
-ReportOnly, e adicione-WaitForCompletionpara esperar resultados confirmados onde o fornecedor de recursos os apoie:.\manage-payg-transition.ps1 ` -Target Both ` -TenantId "<tenant-id>" ` -targetSubscription "<subscription-id>" ` -TargetLicenseType PAYG ` -WaitForCompletionVeja o relatório CSV gerado. Investigue cada resultado
FailedouTimedOute confirme o estado do recurso para cada alteração submetida.
O PAYG valor define o pay-as-you-go como modelo de licença alvo.
Se omitir -WaitForCompletion, a maioria das alterações aceites tem um UpdateResult de RequestSubmitted. Este resultado significa que o Azure aceitou o pedido, não que o tipo de licença terminou de mudar. Azure-SSIS IR espera sempre porque o seu comando update não suporta execução assíncrona.
Agende transições recorrentes pay-as-you-go com o PowerShell
O modo agendado cria ou atualiza um runbook do Automatização do Azure para cada alvo selecionado, liga cada runbook a um cronograma diário e inicia imediatamente um trabalho único. Indique um grupo de recursos para a conta de Automação e uma região do Azure. O nome padrão da conta de Automação é aaccAzureArcSQLLicenseType. O modo agendado utiliza a identidade gerida da conta de Automação.
Agende a transição para SQL do Azure e SQL Server ativados pelos recursos do Azure Arc numa única subscrição:
.\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, associados a uma agenda diária e que conseguem iniciar uma tarefa com os parâmetros selecionados.
Se o destino do Azure incluir conjuntos de SQL Managed Instance, atribua à identidade gerida da conta de Automação Contributor ou uma função personalizada com Microsoft.Sql/instancePools/read e Microsoft.Sql/instancePools/write. A configuração agendada não atribui um papel incorporado que conceda essas permissões.
Impor o licenciamento pay-as-you-go com o Azure Policy
Utilize um exemplo do Azure Policy específico para recursos para impor continuamente o licenciamento pay-as-you-go e corrigir desvios de configuração. Cada exemplo contém uma definição de política, um script de implementação e um script de remediação.
Warning
Uma atribuição de política pode alterar todos os recursos correspondentes no seu âmbito. Comece com uma subscrição de teste de âmbito restrito e selecione apenas os tipos de licença atuais que pretende substituir.
A tabela seguinte liga o pacote de políticas e o script de implementação de cada recurso:
| Resource | Pacote de políticas | Script de implementação |
|---|---|---|
| SQL Server ativado pelo Azure Arc | Conformidade com o tipo de licença SQL Server habilitado por Arc | deployment.ps1 |
| SQL Server em Máquinas Virtuais do Azure | Conformidade do tipo de licença do SQL Server em Azure VMs | deployment.ps1 |
| Azure SQL Managed Instance | Conformidade com o tipo de licença SQL Managed Instance | deployment.ps1 |
| Base de Dados SQL do Azure | Conformidade do tipo de licença do Base de Dados SQL do Azure | deployment.ps1 |
Utilize os valores e papéis para o tipo de recurso selecionado:
| Resource | Valor alvo de pagamento conforme a utilização | Valores fonte que podem ser sobrescritos | Função principal obrigatória | Limitação importante |
|---|---|---|---|---|
| SQL Server ativado pelo Azure Arc | PAYG |
Paid; A definição do portal também suporta LicenseOnly |
Azure Extension for SQL Server Deployment | A atribuição aplica um único alvo a todos os anfitriões correspondentes e não é consciente da edição. Delimite os patrimónios mistos separadamente. |
| SQL Server em Máquinas Virtuais do Azure | PAYG |
AHUB, DR |
Colaborador da Máquina Virtual | O alvo deve cumprir as condições de licenciamento Benefício Híbrido do Azure ou de alta disponibilidade passiva ou recuperação de desastres (HA/DR). |
| Azure SQL Managed Instance | LicenseIncluded |
BasePrice, HybridFailoverRights |
SQL Managed Instance Contributor |
HybridFailoverRights define licenseType como BasePrice e hybridSecondaryUsage como Passive. |
| Base de Dados SQL do Azure | LicenseIncluded |
BasePrice |
Colaborador do Banco de Dados SQL | A política exclui master e bases de dados Basic. O Base de Dados SQL do Azure suporta alterações do tipo de licença apenas para bases de dados com vCore aprovisionado, pelo que deve excluir ou isentar dessa atribuição outras bases de dados baseadas em unidades de transação da base de dados (DTU) e bases de dados sem servidor. |
Cada tarefa também necessita de Leitor e Colaborador de Política de Recursos. Os scripts de implementação concedem as funções necessárias quando a identidade com sessão iniciada tem permissão para criar atribuições de funções. Utilize -GrantMissingPermissions com o script de remediação para verificar e adicionar as funções em falta.
Os scripts de implementação da VM SQL, SQL Managed Instance e SQL Database pedem confirmação quando o valor alvo requer uma atestação de licenciamento.
-SkipLicenseConfirmation Use apenas num pipeline automatizado onde o operador já confirmou a elegibilidade e assume a responsabilidade pela conformidade.
Para o SQL Server com Arc ativado, uma política PAYG também configura o consentimento para faturação recorrente. O consentimento permanece na prorrogação caso uma cessão posterior altere o tipo de licença, deixando de ser PAYG.
Os pacotes de políticas utilizam um fluxo de implementação partilhado:
Descarregue as pastas
policyescriptsdo pacote seguindo as instruções do respetivo README.Inicie sessão no locatário que contém o âmbito da atribuição:
Connect-AzAccount -TenantId "<tenant-id>"A partir da pasta do pacote descarregado, implemente a definição e a atribuição. Utilize o valor alvo de pagamento conforme a utilização para o seu tipo de recurso na tabela anterior. O exemplo seguinte atribui a política no âmbito da subscrição:
.\scripts\deployment.ps1 ` -SubscriptionId "<subscription-id>" ` -TargetLicenseType "<pay-as-you-go-value>"Se omitir
-SubscriptionId, o script usa o âmbito do grupo de gestão. Revise os valores definidos do pacote antes de executar a implementação.Confirme que a atribuição de política tem uma identidade gerida atribuída pelo sistema e os papéis exigidos no âmbito da atribuição.
Iniciar a remediação dos recursos não conformes existentes:
.\scripts\start-remediation.ps1 ` -SubscriptionId "<subscription-id>" ` -TargetLicenseType "<pay-as-you-go-value>" ` -GrantMissingPermissionsNo Azure Policy, reveja os resultados de conformidade da atribuição e a respetiva tarefa de remediação. Em seguida, confirme o tipo de licença nos recursos corrigidos.
Valide a transição para o modelo pré-pago
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 elegível em modo de leitura e não submeteu nenhuma alteração. | Confirme que o recurso deve usar licenciamento conforme a utilização antes de efetuar a transição. |
RequestSubmitted |
O Azure aceitou um pedido assíncrono. | Espere que a operação de recurso termine e depois valide o estado do recurso. |
Updated ou Succeeded |
O script detetou um resultado final com êxito. | Confirme o tipo de licença do recurso. |
Failed |
O serviço rejeitou a atualização ou devolveu um estado terminal falhado. | Reveja UpdateError, corrija o problema e execute novamente a pré-visualização. |
TimedOut |
A extensão do Arc não atingiu um estado terminal antes do limite de votação. | Verifica o estado da extensão. A atualização pode ser concluída depois do script deixar de esperar. |
Para confirmar o tipo de licença atual e o estado de provisionamento do SQL Server ativado 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, reexecute o mesmo âmbito com -ReportOnly:
.\manage-payg-transition.ps1 `
-Target Both `
-TenantId "<tenant-id>" `
-targetSubscription "<subscription-id>" `
-TargetLicenseType PAYG `
-ReportOnly
O script exclui recursos que já utilizam licenciamento pay-as-you-go. Um escopo totalmente convergente reporta que não há recursos para atualizar. Investigue qualquer recurso que ainda apareça antes de considerar a transição concluída.
Limitações de revisão e salvaguardas de faturação
- O SQL Server nas VMs do Azure tem de 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, por isso não sobrescreve a definição de licença de uma réplica passiva de HA/DR. - O script não expõe a opção de consentimento para faturação recorrente do respetivo processador Arc integrado. Para recursos Arc geridos por CSP que requerem consentimento de faturação recorrente, utilize a política de conformidade com tipos de licença SQL Server habilitada pelo Arc, que configura o consentimento quando se aplica
PAYG. - Uma execução assíncrona por defeito favorece a escala em detrimento da confirmação imediata. Usa
-WaitForCompletionquando precisares do script para observar os resultados terminais antes de ele sair. - Por defeito, as atualizações do SQL Server no Azure VM usam um pedido assíncrono do Azure Resource Manager. Se esse pedido falhar, o script volta a
az sql vm update, que espera que a operação termine.
Resolução de falhas na automação
Use o relatório gerado e o estado da operação do Azure para identificar recursos que não foram atualizados.
- Se o relatório estiver vazio, confirme o inquilino, a subscrição e o grupo de recursos. Espera-se um relatório vazio quando todos os recursos dentro do âmbito já utilizam licenciamento pay-as-you-go.
- Se um recurso com Arc for ignorado, restaure a conectividade do agente Azure Connected Machine, confirme que o estado de provisionamento para a extensão Azure para SQL Server é
Succeeded, e depois volte a executar a pré-visualização. - Se
UpdateResultestiverRequestSubmitted, não considere a solicitação concluída. Verifique o estado do recurso ou volte a executar a pré-visualização depois de terminar a operação no Azure. - Se uma operação SQL do Azure ou SQL Server no Azure VM falhar, confirme que o CLI do Azure está instalado, iniciado no mesmo tenant e autorizado para a subscrição alvo.
- Se o modo agendado falhar, confirme que a identidade gerida da conta de Automação tem as funções listadas no exemplo de origem.
- Se a remediação da política devolver
PolicyAuthorizationFailed, confirme que a identidade da atribuição tem a função específica do produto, Leitor, e Contribuidor da Política de Recursos, no âmbito da atribuição. Execute novamente o script de implementação ou execute novamente o script de remediação com-GrantMissingPermissionsdepois de a identidade com sessão iniciada poder criar atribuições de funções.
Para a fonte completa, veja manage-payg-transition.ps1. Para as limitações atuais e os 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 de Contribuinte é um superconjunto das permissões exigidas pelo script neste artigo e é a opção mais simples. Para acesso de privilégios mínimos, atribua as funções necessárias aos tipos de recursos em âmbito:
| Tipo de recurso | Função ou permissões necessárias |
|---|---|
| SQL Server em Máquinas Virtuais do Azure | Colaborador da Máquina Virtual |
| Azure SQL Managed Instance | SQL Managed Instance Contributor |
| Base de Dados SQL do Azure | Colaborador do Banco de Dados SQL |
| Base de Dados SQL do Azure conjuntos elásticos | Colaborador do SQL Server |
| Conjuntos de Azure SQL Managed Instance |
Contribuidor, ou um papel personalizado com Microsoft.Sql/instancePools/read e Microsoft.Sql/instancePools/write |
| SQL Server ativado pelo Azure Arc | Administrador de Recursos de Máquina Conectada do Azure |
| Azure-SSIS IR | Colaborador do Data Factory |
| Leitura e enumeração de subscrições 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ítica no grupo de gestão selecionado e para criar atribuições de política, tarefas de remediação, identidades geridas e atribuições de funções no âmbito da atribuição. Se não conseguir criar atribuições de funções, atribua as funções necessárias à identidade gerida da atribuição da política antes de iniciar a remediação e execute deployment.ps1 com -SkipManagedIdentityRoleAssignment.
Por defeito, deployment.ps1 cria uma identidade gerida atribuída pelo sistema para a atribuição de políticas e concede três funções no âmbito da atribuição. O papel específico do produto depende da amostra de políticas selecionada:
| Exemplo de política | Função específica de produto |
|---|---|
| SQL Server ativado pelo Azure Arc | Azure Extension for SQL Server Deployment |
| SQL Server em Máquinas Virtuais do Azure | Colaborador da Máquina Virtual |
| Azure SQL Managed Instance | SQL Managed Instance Contributor |
| Base de Dados SQL do Azure | Colaborador do Banco de Dados SQL |
Cada identidade de atribuição da política também requer Leitor e Contribuidor da Política de Recursos. O script de implementação só ignora a atribuição automática de funções quando especifica -SkipManagedIdentityRoleAssignment.
Antes de iniciar a remediação, start-remediation.ps1 verifica a identidade da atribuição de política relativamente às três funções necessárias. Se faltar uma função, o script é interrompido. Atribua as funções manualmente ou execute novamente o script de remediação com -GrantMissingPermissions a partir de uma identidade que possa criar atribuições de funções ao nível do âmbito da atribuição.