Procedure consigliate e risoluzione dei problemi per il backup di SQL Server su URL per Microsoft Archiviazione BLOB di Azure

Applies a:SQL ServerIstanza gestita di SQL di Azure

Questo articolo include procedure consigliate e suggerimenti per la risoluzione dei problemi per SQL Server backup e ripristini in Microsoft Archiviazione BLOB di Azure.

Per altre informazioni sull'uso di Archiviazione BLOB di Azure per SQL Server operazioni di backup o ripristino, vedere:

Gestire i backup

Nell'elenco seguente sono inclusi i consigli generali sulla gestione dei backup:

  • Usare un nome di file univoco per ogni backup per impedire la sovrascrittura accidentale dei BLOB.

  • Quando si crea un contenitore, impostare il livello di accesso su privato in modo che solo gli utenti o gli account che possono fornire le informazioni di autenticazione necessarie possono leggere o scrivere i BLOB nel contenitore.

  • Per SQL Server database in un'istanza di SQL Server in esecuzione in una macchina virtuale Azure, usare un account di archiviazione nella stessa area della macchina virtuale per evitare i costi di trasferimento dei dati tra aree. L'utilizzo della stessa area garantisce anche prestazioni ottimali per le operazioni di backup e ripristino.

  • Un'attività di backup non completata correttamente può generare un file di backup non valido. Identificare periodicamente i backup non riusciti ed eliminare i file BLOB. Per ulteriori informazioni, vedi Eliminare i file BLOB di backup con lease attivi.

  • Usare l'opzione WITH COMPRESSION per ridurre al minimo i costi di archiviazione e i costi delle transazioni di archiviazione e ridurre i tempi di backup.

  • Impostare gli argomenti MAXTRANSFERSIZE e BLOCKSIZE sui valori descritti in Backup di SQL Server nell'URL per Archiviazione BLOB di Azure.

  • È possibile eseguire il backup nei BLOB in blocchi con qualsiasi tipo di ridondanza dell'archiviazione (ad esempio, LRS, ZRS, GRS, RA-GRS e RA-GZRS).

Gestire file di grandi dimensioni

L'operazione di backup SQL Server usa più thread per ottimizzare il trasferimento dei dati in Archiviazione BLOB di Azure. Tuttavia, le prestazioni dipendono da fattori quali la larghezza di banda ISV e le dimensioni del database. Se si prevede di eseguire il backup di database o filegroup di grandi dimensioni da un database SQL Server locale, testare prima la velocità effettiva. L'SLA di Azure per Archiviazione prevede tempi massimi di elaborazione per i blob da considerare.

Usare l'opzione WITH COMPRESSION consigliata nella sezione Gestisci backup quando si esegue il backup di file di grandi dimensioni.

Risolvere i problemi di backup verso URL o di ripristino da URL

Usare i suggerimenti seguenti per risolvere gli errori durante il backup o il ripristino da Archiviazione BLOB di Azure.

Per evitare errori dovuti a opzioni non supportate o a limitazioni, esaminare le limitazioni e le opzioni supportate per i comandi BACKUP e RESTORE in Backup e ripristino di SQL Server con Archiviazione BLOB di Azure.

Inizializzazione non riuscita

L'esecuzione di backup paralleli nello stesso BLOB comporta il mancato completamento di uno dei backup con conseguente errore Inizializzazione non riuscita .

Impossibile eseguire la richiesta a causa di un errore del dispositivo di I/O

Quando si effettua il backup di database di grandi dimensioni, è consigliabile considerare l’uso di COMPRESSION, MAXTRANSFERSIZE, BLOCKSIZE e più argomenti URL. Vedere Backup di un VLDB su Archiviazione BLOB di Azure.

Errore:

Msg 3202, Level 16, State 1, Line 1
Write on "https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak" failed:
1117(The request could not be performed because of an I/O device error.)
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.

Una soluzione di esempio:

BACKUP DATABASE TestDb
TO URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak',
   URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_1.bak',
   URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_2.bak'
WITH COMPRESSION,
     MAXTRANSFERSIZE = 4194304,
     BLOCKSIZE = 65536;

Il filemark del messaggio sul dispositivo non è allineato

Quando si esegue il ripristino da un backup compresso, è possibile che venga visualizzato l'errore seguente:

SqlException 3284 occurred. Severity: 16 State: 5
Message Filemark on device 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak' is not aligned.
Re-issue the Restore statement with the same blocksize used to create the backupset: '65536' looks like a possible value.

Per risolvere questo errore, eseguire nuovamente l'istruzione RESTORE con BLOCKSIZE = 65536.

l'attività di backup non completata può generare BLOB con lease attivi

Errore durante il backup a causa di blob con contratti di locazione attivi: Failed backup activity can result in blobs with active leases.

Se si ritenta un'istruzione di backup, l'operazione di backup potrebbe non riuscire con un errore simile all'output seguente:

Backup to URL received an exception from the remote endpoint. Exception Message:
The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request.

Se si tenta di eseguire un'istruzione di ripristino in un file BLOB di backup con un lease attivo, l'operazione di ripristino ha esito negativo con un errore simile al seguente:

Exception Message: The remote server returned an error: (409) Conflict.

Quando si verifica questo errore, eliminare i file BLOB. Per altre informazioni su questo scenario e su come risolvere questo problema, vedere Eliminare i file BLOB di backup con lease attivi.

Errore del sistema operativo 50: la richiesta non è supportata

Quando si esegue il backup di un database, è possibile che venga visualizzato l'errore Operating system error 50(The request is not supported.) per i motivi seguenti:

  • L'account di archiviazione specificato non è per utilizzo generico V1/V2.
  • Il token di firma di accesso condiviso ha un ? simbolo all'inizio. In tal caso, rimuovere il simbolo.
  • Non è possibile connettersi all'account di archiviazione dal computer corrente usando Storage Explorer o SQL Server Management Studio (SSMS).
  • Il criterio assegnato al token SAS è scaduto. Crea un nuovo criterio tramite Azure Storage Explorer e crea un nuovo token SAS usando il criterio oppure modifica la credenziale e prova di nuovo a eseguire il backup.
  • Il certificato radice manca nell'archivio dei Certificati Radice Fidati. Per ulteriori informazioni, vedere Autorità di Certificazione delle Radici di Azure.

Errori di autenticazione

Per eseguire il backup o il ripristino da Archiviazione BLOB di Azure è necessaria una credenziale che archivia le informazioni di autenticazione. SQL Server 2016 (13.x) e versioni successive usano un token di firma di accesso condiviso e il Motore di database di SQL Server corrisponde automaticamente alle credenziali all'URL del contenitore.

Gli errori relativi alle credenziali potrebbero generare i messaggi di errore seguenti:

Numero di errore Message
3288 Credential name <mycredential> does not exist or user does not have permission to access it.
3289 A Backup device of type URL was specified without a Credential, Backup/Restore operation cannot proceed.

Per evitare questo problema, crea la credenziale se non esiste. Per esempio:

IF NOT EXISTS (SELECT *
    FROM sys.credentials
    WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>')
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>]
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = '<SAS_TOKEN>';

La credenziale esiste, ma l'account di accesso che esegue il comando di backup non dispone delle autorizzazioni per accedere alle credenziali. Usare un account che appartiene al ruolo predefinito del database db_backupoperator con le autorizzazioni Alter any credential.

Le informazioni archiviate nelle credenziali devono corrispondere ai valori delle proprietà dell'account di archiviazione Azure in uso nelle operazioni di backup e ripristino.

Errori del proxy

Se si utilizzano server proxy per accedere a Internet, è possibile che si verifichino i problemi indicati di seguito:

Limitazione della connessione da parte dei server proxy

I server proxy potrebbero avere impostazioni che limitano il numero di connessioni al minuto. Il backup nell'URL è multithreading e potrebbe superare questo limite. Se questo limite viene superato, il server proxy chiude la connessione. Per risolvere questo problema, modificare le impostazioni proxy in modo che SQL Server non usi il proxy. Gli esempi seguenti mostrano i messaggi di errore visualizzati nel log degli errori:

Write on "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak" failed: Backup to URL received an exception from the remote endpoint. Exception Message: Unable to read data from the transport connection: The connection was closed.
A nonrecoverable I/O error occurred on file "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" Error could not be gathered from Remote Endpoint.

Msg 3013, Level 16, State 1, Line 2

BACKUP DATABASE is terminating abnormally.
BackupIoRequest::ReportIoError: write failure on backup device 'https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak'. Operating system error Backup to URL received an exception from the remote endpoint. Exception Message: Unable to read data from the transport connection: The connection was closed.

Errori comuni e soluzioni

Problema Soluzione
Errore 3063: Write to backup block blob device https://storageaccount/container/name.bak failed. Device has reached its limit of allowed blocks. Per risolvere questo problema per i backup completi o differenziali, suddividere l'obiettivo di backup in più file. Per tutti i tipi di backup, usare i parametri seguenti nel comando di backup: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536. Questo errore può verificarsi anche se il backup raggiunge le dimensioni massime supportate. Ad esempio, in SQL Server 2022 (16.x) e nelle versioni precedenti, la dimensione massima del backup è di 12,8 TB, calcolata come prodotto di 64 stripe × 50.000 blocchi × un'unità da 4 MB MAXTRANSFERSIZE.
Errore 3035: il backup differenziale non riesce per uno o più database. Questo errore si verifica se si configura Backup di Azure per eseguire il backup di database SQL o di uno snapshot di macchina virtuale (VM), operazione che non crea un backup copy-only e che comporta l'esito negativo dei backup su richiesta del piano di manutenzione o del processo di SQL Agent. Per risolvere questo problema, aggiungere queste chiavi del Registro di sistema alle macchine virtuali che ospitano SQL Server istanze nella chiave [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT] del Registro di sistema e aggiungere "USEVSSCOPYBACKUP"="TRUE".
Errore 3201: Cannot open backup device '<url>'. Operating system error 50(The request is not supported.) Rigenerare il token di firma di accesso condiviso usando Storage Explorer: in Azure Storage Explorer creare un nuovo criterio e un nuovo token di firma di accesso condiviso da tale criterio. Ricreare le credenziali usando il nuovo token di firma di accesso condiviso e riprovare il backup. Per altre informazioni, vedere Problemi noti relativi BACKUP all'URL TO. Verificare che il gruppo di sicurezza di rete (NSG) o il firewall consenta la connessione in ingresso e in uscita sulle porte 1433 e 443.
Errore 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote name could not be resolved. Viene visualizzato questo messaggio se sono stati usati credenziali, segreto o chiave di firma di accesso condiviso non corretti per configurare il backup. Eliminare la credenziale e ricrearla. Per SQL Server 2016 (13.x) e versioni successive, usare SAS.
Errore 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (400) Bad Request. Per risolvere il problema, modificare la versione minima di TLS per l'account di archiviazione impostarla su 1.0 (Versione minima TLS>> di archiviazione).
Messaggio eccezione: The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request. In Azure Storage Explorer identificare i BLOB da 1 TB, interrompere il lease, eliminare il BLOB e ripetere l'operazione di backup.
Errore: The remote server returned an error: (403) Forbidden. Ricreare l'account di archiviazione, le credenziali e il token SAS per risolvere il problema.
Il backup ha avuto esito negativo durante l'uso di un piano di manutenzione. I piani di manutenzione possono non riuscire in modo intermittente. Eseguire il backup equivalente direttamente con T-SQL. Se il backup T-SQL ha esito positivo, pianificarlo come processo SQL Server Agent anziché usare un piano di manutenzione.
Il backup ha avuto esito negativo perché sono stati raggiunti i limiti della macchina virtuale. Se si ricevono errori che indicano che è stato raggiunto il limite IOPS del disco per VM, i backup potrebbero rallentare o non andare a buon fine. Per monitorare i limiti delle operazioni di I/O al secondo o della macchina virtuale, usare Monitoraggio di Azure metriche e ridimensionare la macchina virtuale/disco, se necessario, per risolvere il problema.