Automatizza la transizione verso le licenze SQL pay-as-you-go su larga scala

Si applica a:database SQL di AzureIstanza gestita di SQL di AzureSQL Server in Macchine virtuali di AzureSQL Server abilitato da Azure Arc

In questo articolo viene descritto come:

  • Rivedi e trasferisci diversi prodotti SQL a licenze pay-as-you-go con un unico script PowerShell.
  • Applica continuamente la licenza pay-as-you-go per un tipo di risorsa con Criteri di Azure.

L'automazione in questo articolo si applica a SQL Server abilitato da Azure Arc, SQL Server in Macchine virtuali di Azure, database SQL di Azure e Istanza gestita di SQL di Azure. Il script può anche elaborare un Azure-SSIS Integration Runtime in Azure Data Factory (Azure-SSIS IR).

Modificare un accordo di licenza non modifica il tipo di licenza configurato per le tue risorse SQL. I flussi di lavoro in questo articolo ti aiutano a passare le risorse alla fatturazione pay-as-you-go dopo che le licenze SQL con Software Assurance, licenze in abbonamento SQL o Service Provider License Agreement (SPLA) non sono più applicabili.

Prerequisiti

  • Un account Azure con accesso al tenant e abbonamenti che contengono le risorse SQL.
  • PowerShell 5 o successivamente con il modulo Az PowerShell.
  • La interfaccia della riga di comando di Azure quando usi lo script PowerShell per aggiornare le risorse SQL.
  • Il ruolo del Contributore in ogni abbonamento che modifichi. Per alternative a privilegio minimo, consulta i permessi per tipo di risorsa.
  • Per la modalità programmata, permesso di creare assegnazioni di ruoli nell'ambito di abbonamento target, oppure i ruoli richiesti preassegnati all'identità gestita dell'account Automation.
  • L'autorità di modificare le impostazioni di fatturazione e attestare i termini di licenza per le risorse target.

Per evitare di installare gli strumenti localmente, esegui lo script in Azure Cloud Shell. Cloud Shell include Azure PowerShell e l'interfaccia della riga di comando di Azure e autentica la sessione. Specifica -TenantId quando il tuo account può accedere a più di un inquilino.

Scegli un metodo di automazione

È possibile scegliere tra:

  • PowerShell per il passaggio tra risorse al modello di licenza pay-as-you-go.
  • Criteri di Azure per l'applicazione continua del modello con pagamento in base al consumo per un solo tipo di risorsa.

La tabella seguente fornisce dettagli su ciascun metodo di automazione:

Scenario Metodo consigliato
Rivedere o applicare modifiche pay-as-you-go su più tipi di risorse SQL manage-payg-transition.ps1
Trasferire tutte le risorse supportate in un abbonamento o in un tenant a una licenza pay-as-you-go manage-payg-transition.ps1
Esegui una transizione pay-as-you-go con un programma ricorrente manage-payg-transition.ps1 in modalità programmata
Applicare continuamente la licenza pay-as-you-go per un solo tipo di risorsa e correggere la deriva Un esempio specifico di Criteri di Azure per risorse
Modifica manualmente una risorsa L'articolo specifico sulle licenze del prodotto

Rivedi le risorse supportate e i valori delle licenze

Le procedure descritte in questo articolo impostano -TargetLicenseType su PAYG. Lo script traduce questo valore nel valore pay-as-you-go richiesto da ciascun fornitore di risorse. I valori sorgente mostrano configurazioni di licenza comuni che la transizione può sostituire.

Conto risorse Valore target a consumo Valori sorgente comuni Supportato dallo script Esempio di Criteri di Azure
SQL Server abilitato da Azure Arc PAYG Paid, LicenseOnly Conformità al tipo di licenza SQL Server abilitata ad Arc
SQL Server su Macchine Virtuali di Azure PAYG AHUB Conformità del tipo di licenza per SQL Server in Azure VMs
database SQL di Azure ed elastic pool LicenseIncluded BasePrice Conformità del tipo di licenza di database SQL di Azure
Istanza gestita di SQL di Azure e pool di istanze LicenseIncluded BasePrice, HybridFailoverRights Conformità al tipo di licenza Istanza gestita di SQL
Azure-SSIS IR LicenseIncluded BasePrice Non trattato in questo articolo

Gli esempi di policy possono sovrascrivere ulteriori valori sorgente, come DR per SQL Server su VM Azure. Rivedere il campione selezionato prima di implementare un incarico di policy.

Capire come funziona lo script PowerShell

Puoi usare lo script PowerShell per modificare tutte le risorse all'interno di un gruppo di risorse, tutte le risorse all'interno di un abbonamento e tutte le risorse di uno o più abbonamenti all'interno di un intero tenant.

Lo script è autonomo e funziona tra le risorse SQL supportate. Quando -TargetLicenseType è impostato sul valore predefinito PAYG, converte tale valore nel valore con pagamento in base al consumo richiesto da ciascun tipo di risorsa, come illustrato in Esaminare le risorse supportate e i valori di licenza. Di default, la cartella di lavoro generata rimane dopo la fine dello script. Per rimuoverlo dopo un'esecuzione, specifica -cleanDownloads $true.

Lo script stampa un riassunto per tipo di risorsa e elenca la causa di ogni risorsa fallita o saltata. Quando lo script trova risorse corrispondenti, crea anche un ModifiedResources_<timestamp>.csv report con UpdateResult colonne e UpdateError .

I seguenti parametri controllano l'ambito e l'esecuzione dello script:

Parametro Valore accettato o default Purpose
-Target Arc, Azure, oppure Both (predefinito) Seleziona le risorse SQL Server abilitate da Azure Arc, le risorse Azure SQL e Azure-SSIS IR, oppure entrambi i gruppi.
-RunMode Single (impostazione predefinita) o Scheduled Esegue la transizione una volta o configura quotidianamente i runbook di Automazione di Azure.
-TargetLicenseType PAYG Seleziona il pay-as-you-go come modello di licenza target per le procedure descritte in questo articolo.
-targetSubscription ID abbonamento; tutti gli abbonamenti accessibili nel tenant di default Limita la transizione a un solo abbonamento.
-targetResourceGroup Nome del gruppo risorse; tutti i gruppi di risorse di default Limita la transizione a un solo gruppo di risorse.
-TenantId ID Tenente; contesto attuale di Az PowerShell di default Seleziona il tenant Microsoft Entra.
-ReportOnly Switch; disabilitato per impostazione predefinita Segnala le risorse qualificabili senza modificarle.
-WaitForCompletion Switch; disabilitato per impostazione predefinita Attende che le modifiche inviate raggiungano uno stato terminale quando supportate.
-UsePcoreLicense No (impostazione predefinita) o Yes Controlla le licenze fisiche per SQL Server abilitate da Azure Arc.
-AutomationAccResourceGroupName Obbligatorio con -RunMode Scheduled Seleziona il gruppo risorse per l'account Automazione.
-AutomationAccountName aaccAzureArcSQLLicenseType per impostazione predefinita Imposta il nome dell'account Automation.
-Location Richiesto con -RunMode Scheduled Seleziona la regione Azure per l'account di Automazione e il gruppo risorse.
-cleanDownloads $false (impostazione predefinita) o $true Rimuove la cartella di lavoro generata dopo la fine dello script.

Il comportamento predefinito dell'esecuzione dipende dal tipo di risorsa:

Conto risorse Comportamento predefinito Con -WaitForCompletion
Database SQL di Azure, Istanza SQL gestita di Azure Invia una richiesta asincrona e riporta RequestSubmitted Attese e riferisce Updated
SQL Server abilitato da Azure Arc Invia un aggiornamento asincrono dell'estensione e segnala RequestSubmitted Interroga l'estensione e riporta Succeeded, Failed, oppure TimedOut
SQL Server su Macchine Virtuali di Azure Invia una richiesta diretta da Azure Resource Manager e riportaRequestSubmitted Esegue az sql vm update, attende e segnala Updated
Azure-SSIS IR Attese e riferisce Updated Stesso comportamento

Visualizza in anteprima la transizione pay-as-you-go

Lo manage-payg-transition.ps1 script fornisce un punto di ingresso per Azure SQL e SQL Server abilitati dalle risorse di Azure Arc.

Con lo script PowerShell puoi specificare un singolo abbonamento per scansionare. Se non specifichi un abbonamento, lo script scansiona tutti gli abbonamenti a cui il tuo ruolo può accedere.

  1. Scaricare lo 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"
    
  2. Accedi al tenant che contiene le risorse:

     Connect-AzAccount -TenantId "<tenant-id>"
    
  3. Esegui un'anteprima di sola lettura per un singolo abbonamento. Specifica -TenantId anche quando hai già un contesto Azure in modo che lo script non utilizzi il tenant sbagliato:

    .\manage-payg-transition.ps1 `
        -Target Both `
        -TenantId "<tenant-id>" `
        -targetSubscription "<subscription-id>" `
        -TargetLicenseType PAYG `
        -ReportOnly
    
  4. Se lo script trova risorse corrispondenti, apri il report ModifiedResources_<timestamp>.csv più recente. Conferma che ogni risorsa elencata debba cambiare:

    $report = Get-ChildItem -Filter "ModifiedResources_*.csv" |
        Sort-Object LastWriteTime -Descending |
        Select-Object -First 1
    
    Import-Csv $report.FullName | Format-Table
    

Le risorse che già utilizzano la licenza pay-as-you-go non compaiono nel rapporto. Se lo script non trova risorse corrispondenti, non crea un file CSV. Per ridurre l'ambito, specificare -targetResourceGroup. Imposta -Target su Azure per elaborare le risorse di Azure SQL e Azure-SSIS IR. Impostalo su Arc per elaborare solo le risorse SQL Server abilitate da Azure Arc.

Esegui una transizione pay-as-you-go una tantum con PowerShell

Esegui la transizione pay-as-you-go solo dopo aver confermato l'ambito target e approvato ogni risorsa nel report di anteprima.

  1. Rimuovere -ReportOnly, e aggiungere -WaitForCompletion ad attesa di risultati confermati in cui il fornitore di risorse li supporta:

    .\manage-payg-transition.ps1 `
        -Target Both `
        -TenantId "<tenant-id>" `
        -targetSubscription "<subscription-id>" `
        -TargetLicenseType PAYG `
        -WaitForCompletion
    
  2. Rivedi il report CSV generato. Analizza ogni risultato Failed o TimedOut e conferma lo stato della risorsa per ogni modifica inviata.

Il valore PAYG imposta pay-as-you-go come modello di licenza di destinazione.

Se ometti -WaitForCompletion, la maggior parte delle modifiche accettate presenta un UpdateResult di RequestSubmitted. Questo risultato significa che Azure ha accettato la richiesta, non che il tipo di licenza ha terminato di cambiare. Azure-SSIS IR aspetta sempre perché il suo comando update non supporta l'esecuzione asincrona.

Pianifica passaggi ricorrenti al modello pay-as-you-go con PowerShell

La modalità programmata crea o aggiorna un runbook Automazione di Azure per ogni target selezionato, collega ogni runbook a un programma giornaliero e avvia immediatamente un lavoro una tantum. Specifica il gruppo di risorse dell'account di Automazione e l'area di Azure. Il nome predefinito dell'account Automation è aaccAzureArcSQLLicenseType. La modalità programmata utilizza l'identità gestita dell'account di Automazione.

  1. Programma la transizione per Azure SQL e SQL Server abilitati dalle risorse Azure Arc in un unico abbonamento:

    .\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>"
    
  2. Nell'account di Automazione, verifica che i runbook siano pubblicati, collegati a una pianificazione giornaliera e in grado di avviare un processo con i parametri selezionati.

Se la destinazione Azure include pool di Istanza gestita di SQL, assegna all'identità gestita dell'account Automation il ruolo Contributor o un ruolo personalizzato con Microsoft.Sql/instancePools/read e Microsoft.Sql/instancePools/write. La configurazione programmata non assegna un ruolo integrato che conceda questi permessi.

Applica la licenza pay-as-you-go con Criteri di Azure

Usa un esempio di Criteri di Azure specifico per risorsa per far rispettare continuamente la licenza pay-as-you-go e correggere la deriva della configurazione. Ogni esempio contiene una definizione di policy, uno script di deployment e uno script di remediation.

Avvertimento

Un'assegnazione di policy può modificare ogni risorsa corrispondente nel suo ambito. Inizia con un abbonamento di prova a portata ristretta e seleziona solo i tipi di licenza attuali che intendi sostituire.

La tabella seguente collega il pacchetto di policy e lo script di deployment per ogni risorsa:

Conto risorse Pacchetto politico Script di distribuzione
SQL Server abilitato da Azure Arc Conformità al tipo di licenza SQL Server abilitata ad Arc deployment.ps1
SQL Server su Macchine Virtuali di Azure Conformità del tipo di licenza per SQL Server in Azure VMs deployment.ps1
Istanza gestita di SQL di Azure (Istanza gestita di Azure SQL) Conformità al tipo di licenza Istanza gestita di SQL deployment.ps1
Database SQL di Microsoft Azure Conformità del tipo di licenza di database SQL di Azure deployment.ps1

Usa i valori e i ruoli per il tipo di risorsa selezionato:

Conto risorse Valore target a consumo Valori sorgente che possono essere sovrascritti Ruolo principale richiesto Limitazione importante
SQL Server abilitato da Azure Arc PAYG Paid; La definizione del portale supporta anche LicenseOnly Azure Extension for SQL Server Deployment L'assegnazione assegna un unico target a tutti gli host corrispondenti e non distingue le edizioni. Definire separatamente le proprietà miste.
SQL Server su Macchine Virtuali di Azure PAYG AHUB, DR Collaboratore per macchine virtuali La destinazione deve soddisfare i requisiti di licenza di Vantaggio Azure Hybrid o quelli di alta disponibilità passiva o disaster recovery (HA/DR).
Istanza gestita di SQL di Azure (Istanza gestita di Azure SQL) LicenseIncluded BasePrice, HybridFailoverRights Istanza gestita di SQL Contributor HybridFailoverRights pone licenseType a BasePrice e hybridSecondaryUsage a Passive.
Database SQL di Microsoft Azure LicenseIncluded BasePrice Contributore DB SQL Il criterio esclude master e i database Basic. database SQL di Azure consente di modificare il tipo di licenza solo per i database vCore con provisioning, quindi escludi o esenta dall'assegnazione gli altri database basati su unità di transazione del database (DTU) e i database serverless.

Ogni compito richiede anche un Lettore e un Contributore alle Politiche delle Risorse. Gli script di distribuzione concedono i ruoli richiesti quando l'identità loginata ha il permesso di creare assegnazioni di ruolo. Usa -GrantMissingPermissions con lo script di correzione per verificare e aggiungere i ruoli mancanti.

Gli script di distribuzione SQL VM, Istanza gestita di SQL e SQL Database richiedono la conferma quando il valore target richiede un'attestazione di licenza. Utilizzare -SkipLicenseConfirmation solo in una pipeline automatizzata dove l'operatore ha già confermato l'idoneità e si assume la responsabilità della conformità.

Per SQL Server abilitato ad Arc, una PAYG policy configura anche il consenso alla fatturazione ricorrente. Il consenso rimane nell'estensione se una successiva assegnazione modifica il tipo di licenza, che non è più PAYG.

I pacchetti di policy utilizzano un flusso di distribuzione condiviso:

  1. Scarica le cartelle policy e scripts del pacchetto seguendo le istruzioni nel file README.

  2. Accedi al tenant che contiene l'ambito di assegnazione:

    Connect-AzAccount -TenantId "<tenant-id>"
    
  3. Dalla cartella del pacchetto scaricato, distribuisci la definizione e l'assegnazione. Usa il valore target pay-as-you-go per il tipo di risorsa della tabella precedente. Il seguente esempio assegna la policy all'ambito di sottoscrizione:

    .\scripts\deployment.ps1 `
        -SubscriptionId "<subscription-id>" `
        -TargetLicenseType "<pay-as-you-go-value>"
    

    Se ometti -SubscriptionId, lo script usa l'ambito del gruppo di gestione. Rivedi i valori predefiniti del pacchetto prima di eseguire il deployment.

  4. Verificare che l'assegnazione della policy disponga di un'identità gestita assegnata dal sistema e dei ruoli richiesti nell'ambito di assegnazione.

  5. Inizia la bonifica per le risorse non conformi esistenti:

    .\scripts\start-remediation.ps1 `
        -SubscriptionId "<subscription-id>" `
           -TargetLicenseType "<pay-as-you-go-value>" `
        -GrantMissingPermissions
    
  6. In Criteri di Azure, rivedi i risultati di conformità dell'assegnazione e il compito di bonifica. Poi conferma il tipo di licenza sulle risorse rimosse.

Convalida la transizione al pagamento in base al consumo

Il report CSV include una UpdateResult e una UpdateError per ogni risorsa selezionata. Interpretare i risultati comuni come segue:

Result Meaning Azione successiva
ReportOnly Lo script identificava una risorsa qualificata in modalità sola lettura e non inviava alcuna modifica. Conferma che la risorsa debba utilizzare la licenza pay-as-you-go prima di eseguire la transizione.
RequestSubmitted Azure ha accettato una richiesta asincrona. Aspettare che l'operazione della risorsa finisca, poi validare lo stato della risorsa.
Updated oppure Succeeded Lo script ha osservato un risultato finale positivo. Conferma il tipo di licenza sulla risorsa.
Failed Il servizio ha rifiutato l'aggiornamento o restituito uno stato terminale guasto. Rivedi UpdateError, correggi il problema e rifai l'anteprima di nuovo.
TimedOut L'estensione di Arc non ha raggiunto uno stato terminale prima del limite di votazione. Controlla lo stato dell'estensione. L'aggiornamento potrebbe completarsi dopo che lo script ha smesso di aspettare.

Per confermare il tipo di licenza attuale e lo stato di provisioning per SQL Server abilitato da Azure Arc, esegui la seguente query 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
"@

Dopo che le operazioni inviate sono terminate, riesegui lo stesso ambito con -ReportOnly:

.\manage-payg-transition.ps1 `
    -Target Both `
    -TenantId "<tenant-id>" `
    -targetSubscription "<subscription-id>" `
    -TargetLicenseType PAYG `
    -ReportOnly

Lo script esclude risorse che già utilizzano la licenza pay-as-you-go. Un ambito completamente convergente non segnala risorse da aggiornare. Esamina qualsiasi risorsa ancora presente prima di considerare completata la transizione.

Limitazioni di revisione e tutele di fatturazione

  • SQL Server su Azure VM deve essere in esecuzione. Lo script salta le VM fermate o dislocate e non le avvia.
  • Lo script esclude SQL Server sulle VM Azure che usano il DR tipo di licenza, quindi non sovrascrive l'impostazione della licenza per una replica passiva HA/DR.
  • Lo script non espone l'opzione di consenso alla fatturazione ricorrente del suo handler Arc integrato. Per le risorse Arc gestite da CSP che richiedono il consenso di fatturazione ricorrente, si utilizza la policy di conformità al tipo di licenza SQL Server abilitata ad Arc, che configura il consenso quando viene applicataPAYG.
  • Una corsa asincrona predefinita favorisce la scala rispetto alla conferma immediata. Usa -WaitForCompletion quando hai bisogno che lo script monitori l'output del terminale prima di terminare.
  • Di default, gli aggiornamenti di SQL Server su Azure VM utilizzano una richiesta asincrona di Azure Resource Manager. Se quella richiesta fallisce, lo script torna a az sql vm update, che attende la fine dell'operazione.

Risoluzione dei problemi di automazione

Usa il report generato e lo stato delle operazioni di Azure per identificare le risorse che non sono state aggiornate.

  • Se il report è vuoto, conferma il tenant, l'abbonamento e il gruppo di risorse. Si prevede un report vuoto quando tutte le risorse che rientrano nell'ambito usano già licenze pay-as-you-go.
  • Se una risorsa abilitata per Arc viene ignorata, ripristinare la connettività dell'agente Azure Connected Machine, confermare che lo stato di provisioning dell'estensione Azure per SQL Server è Succeeded e quindi eseguire di nuovo l'anteprima.
  • Se UpdateResult è RequestSubmitted, non considerare la richiesta completa. Controlla lo stato della risorsa o riesegui l'anteprima dopo la fine dell'operazione Azure.
  • Se un'operazione Azure SQL o SQL Server su Azure VM fallisce, conferma che interfaccia della riga di comando di Azure è installata, connessa allo stesso tenant e autorizzata per l'abbonamento target.
  • Se la modalità pianificata non funziona, verifica che l'identità gestita dell'account di Automazione disponga dei ruoli elencati nell'esempio di origine.
  • Se la correzione delle policy restituisce PolicyAuthorizationFailed, conferma che l'identità dell'assegnazione disponga del ruolo specifico del prodotto, Reader, e di Resource Policy Contributor nell'ambito dell'assegnazione. Rieseguire lo script di distribuzione oppure rieseguire lo script di correzione con -GrantMissingPermissions dopo che l'identità connessa può creare assegnazioni di ruolo.

Per la fonte completa, vedi manage-payg-transition.ps1. Per le limitazioni attuali e i risultati dei test, consulta il manage-payg-transition.ps1 piano di test.

Permessi per tipo di risorsa

Permessi per lo script PowerShell

Il ruolo Contributore è un superset dei permessi richiesti dallo script in questo articolo ed è l'opzione più semplice. Per l'accesso a privilegi minimi, assegna i ruoli richiesti per i tipi di risorsa nell'ambito:

Tipo di risorsa Ruolo o permessi richiesti
SQL Server su Macchine Virtuali di Azure Collaboratore per macchine virtuali
Istanza gestita di SQL di Azure (Istanza gestita di Azure SQL) Istanza gestita di SQL Contributor
Database SQL di Microsoft Azure Contributore DB SQL
pool elastici di database SQL di Azure Collaboratore SQL Server
pool di Istanza gestita di SQL di Azure Contributore, o un ruolo personalizzato con Microsoft.Sql/instancePools/read e Microsoft.Sql/instancePools/write
SQL Server abilitato da Azure Arc Amministratore delle risorse di Azure Connected Machine
Azure-SSIS IR Data Factory Collaboratore
Lettura e enumerazione di abbonamenti e risorse Lettore, a meno che un altro ruolo assegnato non conceda i permessi di lettura necessari

Autorizzazioni per Criteri di Azure

L'identità con cui viene eseguito deployment.ps1 deve disporre delle autorizzazioni necessarie per creare definizioni di criteri nel gruppo di gestione selezionato e per creare assegnazioni di criteri, attività di correzione, identità gestite e assegnazioni di ruolo nell'ambito di assegnazione. Se non può creare assegnazioni di ruoli, assegna i ruoli richiesti all'identità gestita dell'assegnazione politica prima di iniziare la remediazione e esegui deployment.ps1 con -SkipManagedIdentityRoleAssignment.

Per impostazione predefinita, deployment.ps1 crea un'identità gestita assegnata dal sistema per l'assegnazione della policy e assegna tre ruoli nell'ambito dell'assegnazione. Il ruolo specifico per prodotto dipende dal campione politico selezionato:

Esempio di politica Ruolo specifico per prodotto
SQL Server abilitato da Azure Arc Azure Extension for SQL Server Deployment
SQL Server su Macchine Virtuali di Azure Collaboratore per macchine virtuali
Istanza gestita di SQL di Azure (Istanza gestita di Azure SQL) Istanza gestita di SQL Contributor
Database SQL di Microsoft Azure Contributore DB SQL

Ogni identità di assegnazione politica richiede anche Reader e Resource Policy Contributor. Lo script di distribuzione salta l'assegnazione automatica dei ruoli solo quando specifichi -SkipManagedIdentityRoleAssignment.

Prima di iniziare la bonifica, start-remediation.ps1 controlla l'identità dell'assegnazione politica per tutti e tre i ruoli richiesti. Se manca un ruolo, il copione si interrompe. Assegna i ruoli manualmente oppure riesegui lo script di correzione con -GrantMissingPermissions da un'identità che può creare assegnazioni di ruolo nell'ambito di assegnazione.