Backup automatico per macchine virtuali SQL Server 2014 (Resource Manager)

Si applica a:SQL Server su VM di Azure

Backup automatico Configura automaticamente il backup gestito in Microsoft Azure per tutti i database nuovi ed esistenti in una macchina virtuale di Azure con SQL Server 2014 Standard o Enterprise in esecuzione. In questo modo è possibile configurare i backup periodici del database che usano l'archiviazione BLOB di Azure durevole. Il Backup Automatico dipende dall'estensione dell'agente di infrastruttura distribuita come servizio (IaaS) SQL Server.

Nota

Azure offre due diversi modelli di distribuzione che possono essere usati per creare e usare le risorse, ovvero Azure Resource Manager e la distribuzione classica. Questo articolo illustra l'uso del modello di distribuzione di Resource Manager. Per le nuove distribuzioni, si consiglia di usare il modello di distribuzione di Resource Manager, invece di quello classico.

Prerequisiti

Per usare il Backup Automatico, tenere in considerazione i seguenti prerequisiti:

Sistema operativo:

  • Windows Server 2012 e versioni successive

Versione/edizione di SQL Server:

  • SQL Server 2014 Standard
  • SQL Server 2014 Enterprise

Nota

Per SQL 2016 e versioni successive, vedere Backup Automatico per SQL Server 2016.

Configurazione del database:

  • I database di destinazione degli utenti devono usare il modello di recupero con registrazione completa. I database di sistema non devono necessariamente usare il modello di recupero con registrazione completa. Se tuttavia è necessario effettuare il backup del log per model o msdb deve essere usato il modello di recupero con registrazione completa. Per ulteriori informazioni sull'impatto del modello di recupero con registrazione completa sui backup, vedere Backup con il modello di recupero con registrazione completa.
  • La macchina virtuale di SQL Server è stata registrata con l'estensione SQL IaaS Agent e la funzionalità Backup automatico è abilitata. Poiché il backup automatico si basa sull'estensione, il backup automatico è supportato solo nei database di destinazione dall'istanza predefinita o in una singola istanza denominata. L'estensione SQL IaaS Agent e il backup automatico non funzionano se non è presente un'istanza predefinita e ci sono più istanze denominate.

Impostazioni

Nella seguente tabella sono descritte le opzioni che possono essere configurate per il Backup Automatico. I passaggi di configurazione effettivi variano a seconda che venga usato il portale di Azure o i comandi di Windows PowerShell di Azure. Si noti che il Backup Automatico usa la compressione dei backup per impostazione predefinita e non è possibile disabilitarlo.

Impostazioni Intervallo (impostazione predefinita) Descrizione
Backup automatizzato Abilita/Disabilita (disabilitato) Abilita o disabilita il backup automatico per una macchina virtuale di Azure in cui viene eseguito SQL Server 2014 Standard o Enterprise.
Periodo di conservazione 1-90 giorni (90 giorni) Numero di giorni di conservazione di un backup.
Account di archiviazione Account di archiviazione di Azure Account di archiviazione di Azure da usare per archiviare i file del Backup Automatico nell'archiviazione BLOB. In questa posizione viene creato un contenitore per archiviare tutti i file di backup. La convenzione di denominazione dei file di backup include la data, l'ora e il nome del computer.
Crittografia Abilita/Disabilita (disabilitato) Abilita o disabilita la crittografia di backup. Quando è abilitata la crittografia, i certificati usati per ripristinare il backup sono contenuti nell'account di archiviazione specificato, nello stesso contenitore automaticbackup con la stessa convenzione di denominazione. Se la password viene modificata, viene generato un nuovo certificato con tale password, ma il certificato precedente viene mantenuto per ripristinare i backup precedenti.
Password Testo della password Password per le chiavi di crittografia. Questa impostazione è necessaria solo se la crittografia è abilitata. Per ripristinare un backup crittografato, è necessario disporre della password corretta e del certificato correlato usato al momento dell'esecuzione del backup.

Configurare le nuove macchine virtuali

Usare il portale di Azure per configurare il Backup Automatico quando si crea una nuova macchina virtuale di SQL Server 2014 nel modello di distribuzione di Resource Manager.

Nella scheda Impostazioni SQL Server scorrere verso il basso fino a Backup automatico e selezionare Abilita. Nella seguente schermata del portale di Azure vengono mostrate le impostazioni del Backup Automatico di SQL.

Screenshot della configurazione del backup automatico di SQL nel portale di Azure.

Configurare le macchine virtuali esistenti

Per le macchine virtuali di SQL Server esistenti, è possibile abilitare e disabilitare i backup automatici, modificare il periodo di mantenimento dati, specificare l'account di archiviazione e abilitare la crittografia dal portale di Azure.

Passare alla risorsa Macchine virtuali SQL per la propria macchina virtuale SQL Server 2014, quindi selezionare Backup.

Screenshot del backup automatico di SQL per le macchine virtuali esistenti.

Al termine, fare clic sul il pulsante Applica nella parte inferiore della pagina Backup per salvare le modifiche.

Se si intende abilitare il Backup Automatico per la prima volta, Azure configura l'agente IaaS di SQL Server in background. Durante questo periodo, nel portale di Azure potrebbe non essere visualizzata l'informazione relativa alla configurazione del Backup Automatico. Attendere alcuni minuti per l'installazione e la configurazione dell'agente. A questo punto, nel portale di Azure verranno visualizzate le nuove impostazioni.

Nota

È inoltre possibile configurare il Backup Automatico mediante un modello. Per ulteriori informazioni, vedere l'articolo relativo al modello di avvio rapido di Azure per il Backup Automatico.

Configurare con PowerShell

È possibile usare PowerShell per configurare il Backup Automatico. Prima di iniziare, è necessario eseguire queste operazioni:

Nota

Questo articolo usa il modulo di PowerShell Azure Az consigliato per l'interazione con Azure. Per iniziare a usare il modulo Az PowerShell, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo Az PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Verificare le impostazioni correnti

Se si è abilitato il backup automatico durante il provisioning, è possibile usare PowerShell per verificare la configurazione corrente. Eseguire il comando Get-AzVMSqlServerExtension ed esaminare la proprietà AutoBackupSettings:

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"

(Get-AzVMSqlServerExtension -VMName $vmname -ResourceGroupName $resourcegroupname).AutoBackupSettings

L'output dovrebbe essere simile al seguente:

Enable                      : False
EnableEncryption            : False
RetentionPeriod             : -1
StorageUrl                  : NOTSET
StorageAccessKey            : 
Password                    : 
BackupSystemDbs             : False
BackupScheduleType          : 
FullBackupFrequency         : 
FullBackupStartTime         : 
FullBackupWindowHours       : 
LogBackupFrequency          : 

Se l'output indica che Enable è impostato su False, è necessario abilitare il backup automatico. I passaggi per farlo sono identici a quelli per abilitare e configurare Backup automatico. Per informazioni in merito, vedere la sezione seguente.

Nota

Se si verificano le impostazioni subito dopo una modifica, è possibile che vengano visualizzati i valori precedenti. Attendere alcuni minuti e verificare nuovamente le impostazioni per assicurarsi che siano state applicate le modifiche.

Configurare Backup Automatico

È possibile usare PowerShell per abilitare Backup automatico e per modificarne configurazione e comportamento in qualsiasi momento.

In primo luogo, selezionare o creare un account di archiviazione per i file di backup. Lo script seguente consente di selezionare un account di archiviazione o di crearne uno.

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region }

Nota

Il Backup Automatico non supporta l'archiviazione di backup nell'archiviazione Premium, ma può ottenere i backup da dischi di macchine virtuali che usano l'archiviazione Premium.

Se si vuole usare un contenitore personalizzato nell'account di archiviazione per i backup, usare lo script seguente per verificare se il contenitore o crearlo se non esiste.

$storage_container = "backupcontainer"

New-AzStorageContainer -Name $storage_container -Context $storage.Context

if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
	New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
 else `
{ `
	Write-Warning "Container $storage_container already exists." `
}

Successivamente, usare il comando seguente per ottenere una chiave per l'account di archiviazione:

$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname  -Name $storage_accountname)[0].value

Eseguire quindi il comando aggiornamento AzSqlVM per abilitare e configurare le impostazioni di Backup automatico per archiviare i backup nell'account di archiviazione di Azure. In questo esempio, viene impostata su 10 giorni la conservazione dei backup.

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingStorageContainerName $storage_container 

Potrebbero essere necessari diversi minuti per installare e configurare l'agente IaaS di SQL Server.

Nota

Sono presenti altre impostazioni per Update-AzSqlVM* che si applicano solo a SQL Server 2016 e al Backup Automatico. SQL Server 2014 non supporta le impostazioni seguenti: -AutoBackupSettingBackupSystemDb, -AutoBackupSettingBackupScheduleType, -AutoBackupSettingFullBackupFrequency, -AutoBackupSettingFullBackupStartTime, -AutoBackupSettingFullBackupWindowHour e -AutoBackupSettingLogBackupFrequency. Se si tenta di configurare queste impostazioni in una macchina virtuale di SQL Server 2014, non si verificano errori ma le impostazioni non vengono applicate. Se si desidera usare queste impostazioni in una macchina virtuale di SQL Server 2016, vedere Backup automatico per macchine virtuali SQL Server 2016 di Azure.

Per abilitare la crittografia, modificare lo script precedente in modo da passare il parametro AutoBackupSettingEnableEncryption e una password (stringa sicura) per il parametro -AutoBackupSettingPassword. Il seguente script abilita le impostazioni del Backup Automatico nell'esempio precedente e aggiunge la crittografia.

$password = "r@ndom Va1ue"
$encryptionpassword = $password | ConvertTo-SecureString -AsPlainText -Force  

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingEnableEncryption `
-AutoBackupSettingPassword $encryptionpassword `
-AutoBackupSettingStorageContainerName $storage_container 

Per confermare l'applicazione delle impostazioni, verificare la configurazione di Backup Automatico.

Disabilitare Backup Automatico

Per disabilitare il backup automatico, eseguire lo stesso script con il parametro -AutoBackupSettingEnable impostato su $false nel comando Update-AzSqlVM. Impostando il valore su False, la funzione viene disabilitata. Come per l'installazione, la disabilitazione del Backup Automatico può richiedere alcuni minuti.

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable:$false

Script di esempio

Lo script seguente fornisce un set di variabili da personalizzare per abilitare e configurare Backup Automatico per la propria macchina virtuale. In questo caso, potrebbe essere necessario personalizzare lo script in base alle esigenze. Ad esempio, potrebbe essere necessario apportare modifiche se si desidera disabilitare il backup dei database di sistema o abilitare la crittografia.

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$region = "Azure region name such as EASTUS2"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"
$retentionperiod = 10

# ResourceGroupName is the resource group which is hosting the VM where you are deploying the SQL Server IaaS Extension

Set-AzVMSqlServerExtension -VMName $vmname `
    -ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
    -Version "2.0" -Location $region

# Creates/use a storage account to store the backups

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region }

# Creates/uses a custom storage account container

$storage_container = "yourbackupcontainer"

if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
	New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
 else `
{ `
	Write-Warning "Container $storage_container already exists." `
}

# Get storage account access key
$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname  -Name $storage_accountname)[0].value

# Configure Automated Backup settings

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod $retentionperiod `
-AutoBackupSettingStorageContainerName $storage_container 

Backup con certificati di crittografia

Se si decide di crittografare i backup, verrà generato e salvato un certificato di crittografia nello stesso account di archiviazione dei backup. In questo scenario sarà inoltre necessario immettere una password che verrà usata per proteggere i certificati di crittografia usati per crittografare e decrittografare i backup. Ciò consente di non preoccuparsi dei backup oltre la configurazione di questa funzionalità e garantisce inoltre che i backup siano sicuri.

Quando la crittografia del backup è abilitata, è consigliabile verificare se il certificato di crittografia è stato creato e caricato correttamente per garantire la ripristinabilità dei database. A tale scopo, è possibile creare immediatamente un database e controllare i certificati di crittografia e i dati di cui è stato eseguito il backup nel contenitore appena creato. Ciò mostrerà che tutto è stato configurato correttamente e che non sono si sono verificate anomalie.

Se il certificato non è stato caricato per qualche motivo, è possibile usare il gestore di certificati per esportare il certificato e salvarlo. Tuttavia, non è consigliabile salvarlo sulla stessa macchina virtuale, in quanto ciò non garantisce l'accesso al certificato quando la macchina virtuale è inattiva. Per sapere se il backup del certificato è stato eseguito correttamente dopo aver modificato o creato la configurazione del backup automatico, è possibile controllare i registri eventi nella macchina virtuale e, se non è riuscito, verrà visualizzato questo messaggio di errore:

Screenshot del messaggio di errore mostrato nel registro eventi nella VM.

Se il backup dei certificati è stato eseguito correttamente, verrà visualizzato questo messaggio nei registri eventi:

Screenshot del backup riuscito del certificato di crittografia nei registri eventi.

Come pratica generica, è consigliabile controllare l'integrità dei backup di tanto in tanto. Per poter ripristinare i backup, è necessario eseguire le operazioni seguenti:

  1. Verificare che sia stato eseguito il backup dei certificati di crittografia e che la password sia stata memorizzata. In caso contrario, non sarà possibile decrittografare e ripristinare i backup. Se per qualche motivo il backup dei certificati non è stato eseguito correttamente, è possibile eseguire questa operazione manualmente tramite la query T-SQL seguente:

    BACKUP MASTER KEY TO FILE = <file_path> ENCRYPTION BY PASSWORD = <password>
    BACKUP CERTIFICATE [AutoBackup_Certificate] TO FILE = <file_path> WITH PRIVATE KEY (FILE = <file_path>, ENCRYPTION BY PASSWORD = <password>)
    
  2. Verificare che i file di backup siano caricati con almeno 1 backup completo. Poiché gli errori possono capitare, è necessario assicurarsi di avere sempre almeno un backup completo prima di eliminare la macchina virtuale, o nel caso in cui la macchina virtuale sia danneggiata, in modo da poter comunque accedere ai dati. Assicurarsi che il backup nell'archiviazione sia sicuro e ripristinabile prima di eliminare i dischi dati della macchina virtuale.

Monitoraggio

Per monitorare il Backup automatizzato in SQL Server 2014 esistono due opzioni principali. Poiché Backup automatico usa la funzionalità di Backup gestito di SQL Server, le stesse tecniche di monitoraggio sono valide per entrambi.

In primo luogo, è possibile eseguire il polling dello stato richiedendo msdb.smart_admin.sp_get_backup_diagnostics. Oppure eseguire una query della funzione con valori di tabella msdb.smart_admin.fn_get_health_status.

Nota

Lo schema per il Backup gestito di SQL Server 2014 è msdb.smart_admin. In SQL Server 2016 questo è stato modificato in msdb.managed_backup e gli argomenti di riferimento usano questo schema più recente. Per SQL Server 2014, invece, è necessario continuare a usare lo schema smart_admin per tutti gli oggetti di Backup Gestito.

È inoltre possibile sfruttare la funzionalità incorporata di posta elettronica database per le notifiche.

  1. Richiedere la stored precedure msdb.smart_admin.sp_set_parameter per assegnare un indirizzo di posta elettronica al parametro SSMBackup2WANotificationEmailIds.
  2. Abilitare SendGrid per inviare i messaggi di posta elettronica dalla macchina virtuale di Azure.
  3. Usare il nome utente e il server SMTP per configurare la posta elettronica database. È possibile configurare la posta elettronica database in SQL Server Management Studio o con i comandi Transact-SQL. Per ulteriori informazioni, vedere Posta elettronica database.
  4. Configurare SQL Server Agent per usare la posta elettronica database.
  5. Verificare che la porta SMTP sia consentita sia attraverso il firewall della macchina virtuale locale sia nel gruppo di sicurezza di rete per la macchina virtuale.

Passaggi successivi

Il Backup Automatico configura Backup Gestito in Macchine virtuali di Azure. Pertanto è importante esaminare la documentazione per il backup gestito in SQL Server 2014.

È possibile trovare maggiori informazioni sul backup e sul ripristino per SQL Server in macchine virtuali di Azure nell'articolo seguente: Backup e ripristino per SQL Server in Macchine virtuali di Azure.

Per informazioni sulle altre attività di automazione disponibili, vedere Estensione Agente IaaS di SQL Server.

Per ulteriori informazioni sull'esecuzione di SQL Server nelle VM di Azure, vedere Panoramica di SQL Server nelle macchine virtuali di Azure.