Registrare più macchine virtuali di SQL Server in Azure con l'estensione SQL IaaS Agent

Si applica a:SQL Server su VM Azure

Questo articolo descrive come registrare in blocco le macchine virtuali (VM) di SQL Server in Azure con l'estensione SQL IaaS Agent usando il cmdlet Register-SqlVMs di Azure PowerShell.

È possibile registrare tutte le macchine virtuali di SQL Server in automatico o singole macchine virtuali di SQL Server manualmente.

Nota

Le VM di SQL Server distribuite tramite Azure Marketplace dopo ottobre 2022 hanno il modello con privilegi minimi abilitato per impostazione predefinita. Le modalità di gestione per l'estensione SQL IaaS Agent sono state rimosse nel marzo 2023.

Panoramica

Il cmdlet Register-SqlVMs può essere usato per registrare tutte le macchine virtuali in un elenco specifico di sottoscrizioni, gruppi di risorse o un elenco di macchine virtuali specifiche. Il cmdlet registrerà le macchine virtuali, quindi genererà sia un report che un file di log.

Il processo di registrazione non comporta alcun rischio, non ha tempi di inattività e non riavvia il servizio SQL Server o la macchina virtuale.

Per impostazione predefinita, le macchine virtuali di Azure con SQL Server 2016 o versioni successive vengono registrate automaticamente con l'estensione SQL IaaS Agent una volta rilevate dal servizio Analisi utilizzo software. È possibile usare la registrazione in blocco per registrare tutte le macchine virtuali di SQL Server non rilevate dal servizio Analisi utilizzo software.

Per informazioni sulla privacy, vedere l'informativa sulla privacy dell'estensione SQL IaaS Agent.

Prerequisiti

Per registrare la VM di SQL Server con l'estensione, è necessario quanto segue:

  • Una sottoscrizione di Azure che sia registrata con il provider di risorse Microsoft.SqlVirtualMachine e contenga macchine virtuali di SQL Server non registrate.
  • Assicurarsi che la macchina virtuale sia in esecuzione.
  • Le credenziali client usate per registrare le macchine virtuali devono avere uno dei ruoli di Azure seguenti: Collaboratore macchina virtuale, Collaboratore o Proprietario.
  • Az PowerShell 5.0: le versioni successive alla 5.0 supportano attualmente solo l'autenticazione a più fattori e non sono compatibili con lo script per registrare più macchine virtuali.

Operazioni preliminari

Prima di procedere, è necessario creare una copia locale dello script, importarla come modulo di PowerShell e connettersi ad Azure.

Creare lo script

Per creare lo script, copiare lo script completo alla fine di questo articolo e salvarlo localmente come RegisterSqlVMs.psm1.

Importare lo script

Dopo aver creato lo script, è possibile importarlo come modulo nel terminale di PowerShell.

Aprire un terminale amministrativo di PowerShell e passare al percorso in cui è stato salvato il file RegisterSqlVMs.psm1. Eseguire quindi il seguente cmdlet di PowerShell per importare lo script come modulo:

Import-Module .\RegisterSqlVMs.psm1

Connect to Azure

Usare il seguente cmdlet di PowerShell per connettersi ad Azure:

Connect-AzAccount

Registrare tutte le macchine virtuali in un elenco di sottoscrizioni

Usare il cmdlet seguente per registrare tutte le macchine virtuali di SQL Server in un elenco di sottoscrizioni:

Register-SqlVMs -SubscriptionList SubscriptionId1,SubscriptionId2

Output di esempio:

Number of subscriptions registration failed for 
because you do not have access or credentials are wrong: 1
Total VMs Found: 10
VMs Already registered: 1
Number of VMs registered successfully: 4
Number of VMs failed to register due to error: 1
Number of VMs skipped as VM or the guest agent on VM is not running: 3
Number of VMs skipped as they are not running SQL Server On Windows: 1

Please find the detailed report in file RegisterSqlVMScriptReport1571314821.txt
Please find the error details in file VMsNotRegisteredDueToError1571314821.log

Registrare tutte le macchine virtuali in una singola sottoscrizione

Usare il cmdlet seguente per registrare tutte le macchine virtuali di SQL Server in una singola sottoscrizione:

Register-SqlVMs -Subscription SubscriptionId1

Output di esempio:

Total VMs Found: 10
VMs Already registered: 1
Number of VMs registered successfully: 5
Number of VMs failed to register due to error: 1
Number of VMs skipped as VM or the  guest agent on VM is not running: 2
Number of VMs skipped as they are not running SQL Server On Windows: 1

Please find the detailed report in file RegisterSqlVMScriptReport1571314821.txt
Please find the error details in file VMsNotRegisteredDueToError1571314821.log

Registrare tutte le macchine virtuali in più gruppi di risorse

Usare il cmdlet seguente per registrare tutte le macchine virtuali di SQL Server in più gruppi di risorse all'interno di una singola sottoscrizione:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupList ResourceGroup1,ResourceGroup2

Output di esempio:

Total VMs Found: 4
VMs Already registered: 1
Number of VMs registered successfully: 1
Number of VMs failed to register due to error: 1
Number of VMs skipped as they are not running SQL Server On Windows: 1

Please find the detailed report in file RegisterSqlVMScriptReport1571314821.txt
Please find the error details in file VMsNotRegisteredDueToError1571314821.log

Registrare tutte le macchine virtuali in un gruppo di risorse

Usare il cmdlet seguente per registrare tutte le macchine virtuali di SQL Server in un singolo gruppo di risorse:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupName ResourceGroup1

Output di esempio:

Total VMs Found: 4
VMs Already registered: 1
Number of VMs registered successfully: 1
Number of VMs failed to register due to error: 1
Number of VMs skipped as VM or the guest agent on VM is not running: 1

Please find the detailed report in file RegisterSqlVMScriptReport1571314821.txt
Please find the error details in file VMsNotRegisteredDueToError1571314821.log

Registrare macchine virtuali specifiche in un singolo gruppo di risorse

Usare il cmdlet seguente per registrare macchine virtuali di SQL Server specifiche in un singolo gruppo di risorse:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupName ResourceGroup1 -VmList VM1,VM2,VM3

Output di esempio:

Total VMs Found: 3
VMs Already registered: 0
Number of VMs registered successfully: 1
Number of VMs skipped as VM or the guest agent on VM is not running: 1
Number of VMs skipped as they are not running SQL Server On Windows: 1

Please find the detailed report in file RegisterSqlVMScriptReport1571314821.txt
Please find the error details in file VMsNotRegisteredDueToError1571314821.log

Registrare una macchina virtuale specifica

Usare il cmdlet seguente per registrare una macchina virtuale di SQL Server specifica:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupName ResourceGroup1 -Name VM1

Output di esempio:

Total VMs Found: 1
VMs Already registered: 0
Number of VMs registered successfully: 1

Please find the detailed report in  file RegisterSqlVMScriptReport1571314821.txt

Descrizione output

Ogni volta che viene usato il cmdlet Register-SqlVMs vengono generati un report e un file di log.

- Report

Il report viene generato come file .txt denominato RegisterSqlVMScriptReport<Timestamp>.txt dove il timestamp è l'ora in cui è stato avviato il cmdlet. Il report contiene i dettagli seguenti:

Valore di output Descrizione
La registrazione del numero di sottoscrizioni non è riuscita perché l'utente non può accedere o le credenziali non sono corrette Vengono indicati il numero e l'elenco delle sottoscrizioni che presentano problemi relativi all'autenticazione. L'errore dettagliato si può reperire nel log cercando l'ID sottoscrizione.
Numero di sottoscrizioni che non è stato possibile provare perché non sono registrate con il provider di risorse Questa sezione contiene il conteggio e l'elenco delle sottoscrizioni che non sono state registrate con con l'estensione SQL IaaS Agent.
Numero totale di macchine virtuali trovate Numero di macchine virtuali trovate nell'ambito dei parametri passati al cmdlet.
Macchine virtuali già registrate Numero di macchine virtuali ignorate perché erano già registrate con l'estensione.
Numero di macchine virtuali registrate correttamente Numero di macchine virtuali registrate correttamente dopo l'esecuzione del cmdlet. Le macchine virtuali registrate sono riportate nel formato SubscriptionID, Resource Group, Virtual Machine.
Numero di VM che non è stato possibile registrare a causa di un errore Numero di macchine virtuali che non sono state registrate a causa di un errore. I dettagli dell'errore si trovano nel file di log.
Numero di VM ignorate perché la VM o l'agente guest nella VM non è in esecuzione Numero ed elenco delle macchine virtuali che non è stato possibile registrare perché la macchina virtuale o l'agente guest nella macchina virtuale non era in esecuzione. Queste operazioni possono essere ritentate dopo l'avvio della macchina virtuale o dell'agente guest. I dettagli sono disponibili nel file di log.
Numero di VM ignorate poiché non eseguono SQL Server in Windows Numero di macchine virtuali ignorate perché non eseguono SQL Server o non sono macchine virtuali Windows. Le macchine virtuali sono elencate nel formato SubscriptionID, Resource Group, Virtual Machine.

Log

Gli errori vengono registrati nel file di log denominato VMsNotRegisteredDueToError<Timestamp>.log, dove timestamp è l'ora di inizio dello script. Se l'errore è a livello di sottoscrizione, il log contiene l'ID sottoscrizione delimitato da virgole e il messaggio di errore. Se l'errore riguarda la registrazione della macchina virtuale, il log contiene l'ID sottoscrizione, il nome del gruppo di risorse, il nome della macchina virtuale, il codice di errore e il messaggio separati da virgole.

Osservazioni:

Quando si registrano le VM di SQL Server con l'estensione usando lo script a disposizione, tenere presente quanto segue:

  • La registrazione con l'estensione richiede un agente guest in esecuzione nella VM di SQL Server. Le immagini di Windows Server 2008 non hanno un agente guest, pertanto queste macchine virtuali avranno esito negativo e dovranno essere registrate manualmente con funzionalità limitate.
  • Per superare gli errori trasparenti, è incorporata una logica di ripetizione dei tentativi. Se la macchina virtuale è stata registrata correttamente, si tratta di un'operazione rapida. Tuttavia, se la registrazione ha esito negativo, viene eseguito un nuovo tentativo per ogni macchina virtuale. Di conseguenza, è necessario concedere un tempo significativo per il completamento del processo di registrazione, sebbene il requisito di tempo effettivo dipenda dal tipo e dal numero di errori.

Script completo

Per lo script completo su GitHub, vedere l'articolo sulla registrazione in blocco delle VM di SQL Server con Az PowerShell.

Copiare lo script completo e salvarlo come RegisterSqLVMs.psm1.

Passaggi successivi

Per altre informazioni, vedere gli articoli seguenti: