SQL Server-back-up naar URL voor Microsoft Azure Blob Storage: aanbevolen procedures en probleemoplossing

Van toepassing op:SQL ServerAzure SQL Managed Instance

Dit artikel bevat aanbevolen procedures en tips voor probleemoplossing voor SQL Server back-up en herstel naar Microsoft Azure Blob Storage.

Zie voor meer informatie over het gebruik van Azure Blob Storage voor SQL Server back-up- of herstelbewerkingen:

Back-ups beheren

De volgende lijst bevat algemene aanbevelingen voor het beheren van back-ups:

  • Gebruik een unieke bestandsnaam voor elke back-up om te voorkomen dat de blobs per ongeluk worden overschreven.

  • Wanneer u een container maakt, stelt u het toegangsniveau in op privé , zodat alleen gebruikers of accounts die de vereiste verificatiegegevens kunnen opgeven, de blobs in de container kunnen lezen of schrijven.

  • Voor SQL Server databases op een exemplaar van SQL Server dat wordt uitgevoerd op een Azure virtuele machine, gebruikt u een opslagaccount in dezelfde regio als de virtuele machine om kosten voor gegevensoverdracht tussen regio's te voorkomen. Het gebruik van dezelfde regio zorgt ook voor optimale prestaties voor back-up- en herstelbewerkingen.

  • Mislukte back-upactiviteit kan resulteren in een ongeldig back-upbestand. Identificeer regelmatig mislukte back-ups en verwijder de blob-bestanden. Zie Blobback-upbestanden verwijderen met actieve leases voor meer informatie.

  • Gebruik de WITH COMPRESSION optie om de opslagkosten en opslagtransactiekosten te minimaliseren en back-uptijd te verminderen.

  • Stel de MAXTRANSFERSIZE en BLOCKSIZE argumenten in op de waarden die worden beschreven in SQL Server back-up naar URL voor Azure Blob Storage.

  • U kunt een back-up maken van blok-blobs met elke opslagredundantie (bijvoorbeeld LRS, ZRS, GRS, RA-GRS en RA-GZRS).

Grote bestanden verwerken

De SQL Server back-upbewerking maakt gebruik van meerdere threads om de gegevensoverdracht naar Azure Blob Storage te optimaliseren. Prestaties zijn echter afhankelijk van factoren zoals ISV-bandbreedte en databasegrootte. Als u een back-up wilt maken van grote databases of bestandsgroepen vanuit een on-premises SQL Server database, test u eerst de doorvoer. De Azure SLA voor Storage heeft maximale verwerkingstijden voor blobs om rekening mee te houden.

Gebruik de WITH COMPRESSION optie die wordt aanbevolen in de sectie Back-ups beheren wanneer u een back-up maakt van grote bestanden.

Problemen met back-up naar of herstel vanuit URL oplossen

Gebruik de volgende tips om fouten op te lossen wanneer u een back-up maakt naar of herstelt vanuit Azure Blob Storage.

Als u fouten van niet-ondersteunde opties of beperkingen wilt voorkomen, bekijkt u de beperkingen en de ondersteunde opties voor de BACKUP en RESTORE opdrachten in SQL Server back-up en herstel met Azure Blob Storage.

Initialisatie is mislukt

Parallel back-ups naar dezelfde blob zorgen ervoor dat een van de back-ups mislukt met een initialisatie mislukt fout.

De aanvraag kan niet worden uitgevoerd vanwege een I/O-apparaatfout

Overweeg COMPRESSION, MAXTRANSFERSIZE, BLOCKSIZEen meerdere URL-argumenten bij het maken van back-ups van grote databases. Zie Back-up van een VLDB naar Azure Blob Storage.

De fout:

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.

Een voorbeeldoplossing:

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;

Berichtbestandsmarkering op apparaat is niet uitgelijnd

Wanneer u herstelt vanuit een gecomprimeerde back-up, ziet u mogelijk de volgende fout:

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.

Als u deze fout wilt oplossen, voert u de RESTORE instructie opnieuw uit met BLOCKSIZE = 65536.

Mislukte back-upactiviteit kan leiden tot blobs met actieve leases

Fout tijdens back-up vanwege blobs met actieve lease: Failed backup activity can result in blobs with active leases.

Als u een backupinstructie opnieuw uitvoert, kan de backupbewerking mislukken met een fout die vergelijkbaar is met de volgende uitvoer:

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.

Als u een herstelinstructie probeert uit te voeren op een back-upblobbestand met een actieve lease, mislukt de herstelbewerking met een fout die vergelijkbaar is met het volgende bericht:

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

Wanneer deze fout optreedt, verwijdert u de blobbestanden. Zie Blobback-upbestanden verwijderen met actieve leases voor meer informatie over dit scenario en hoe u dit probleem kunt oplossen.

Besturingssysteemfout 50: de aanvraag wordt niet ondersteund

Wanneer u een back-up maakt van een database, ziet u mogelijk een fout Operating system error 50(The request is not supported.) om de volgende redenen:

  • Het opgegeven opslagaccount is geen General Purpose V1/V2.
  • Het SAS-token (Shared Access Signature) heeft een ? symbool aan het begin. Zo ja, verwijder het symbool.
  • U kunt geen verbinding maken met het opslagaccount vanaf de huidige computer met behulp van Storage Explorer of SQL Server Management Studio (SSMS).
  • Het beleid dat is toegewezen aan het SAS-token is verlopen. Maak een nieuw beleid met behulp van Azure Storage Explorer en maak een nieuw SAS-token met behulp van het beleid of wijzig de referentie en probeer opnieuw een back-up te maken.
  • Het rootcertificaat ontbreekt in de vertrouwde hoofdcertificaatopslag. Zie Azure basiscertificeringsinstanties voor meer informatie.

Authenticatiefouten

Voor het maken van een back-up van of het herstellen van Azure Blob Storage is een referentie vereist waarmee de verificatiegegevens worden opgeslagen. SQL Server 2016 (13.x) en latere versies gebruiken een SAS-token (Shared Access Signature) en de SQL Server Database Engine koppelt de referentie automatisch aan de URL van de container.

Fouten met betrekking tot referenties kunnen de volgende foutberichten opleveren:

Foutnummer 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.

Maak, om dit probleem te voorkomen, het inloggegeven aan als dit nog niet bestaat. Voorbeeld:

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>';

De aanmeldingsgegevens bestaan, maar de aanmelding waarmee de back-upopdracht wordt uitgevoerd, heeft geen machtigingen om toegang te krijgen tot de aanmeldingsgegevens. Gebruik een account in de vaste databaserol db_backupoperator met de machtiging Alle aanmeldingsgegevens wijzigen.

De informatie die in de referentie is opgeslagen, moet overeenkomen met de eigenschapswaarden van het Azure opslagaccount dat u gebruikt in de back-up- en herstelbewerkingen.

Proxyfouten

Als u proxyservers gebruikt voor toegang tot internet, ziet u mogelijk de volgende problemen:

Verbindingsbeperking door proxyservers

Proxyservers hebben mogelijk instellingen die het aantal verbindingen per minuut beperken. Een back-up maken naar een URL gebruikt meerdere threads en kan deze limiet overschrijden. Als deze limiet wordt overschreden, sluit de proxyserver de verbinding. U kunt dit probleem oplossen door de proxyinstellingen te wijzigen, zodat SQL Server de proxy niet gebruikt. In de volgende voorbeelden ziet u foutberichten die u in het foutenlogboek kunt zien:

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.

Veelvoorkomende fouten en oplossingen

Probleem Oplossing
Fout 3063: Write to backup block blob device https://storageaccount/container/name.bak failed. Device has reached its limit of allowed blocks. Als u dit probleem wilt oplossen voor volledige of differentiële back-ups, stript u het back-updoel met meerdere bestanden. Gebruik voor alle back-uptypen de volgende parameters in de back-upopdracht: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536. Deze fout kan ook optreden als de back-up de maximale ondersteunde grootte bereikt. In SQL Server 2022 (16.x) en eerdere versies is de maximale back-upgrootte bijvoorbeeld 12,8 TB, berekend als 64 strepen × 50.000 blokken × een 4 MBMAXTRANSFERSIZE.
Fout 3035: Differentiële back-up mislukt voor een of meer databases. Deze fout treedt op als u Azure Backup hebt geconfigureerd voor het maken van back-ups van SQL-databases of een momentopname van een virtuele machine (VM), waardoor er geen back-up wordt gemaakt die alleen kopiëren maakt, waardoor uw onderhoudsplan of SQL-agenttaak op aanvraag mislukt. U kunt dit probleem oplossen door deze registersleutels toe te voegen aan de VM's die als host fungeren voor SQL Server exemplaren op de registersleutel [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT] en toe te voegen"USEVSSCOPYBACKUP"="TRUE".
Fout 3201: Cannot open backup device '<url>'. Operating system error 50(The request is not supported.) Genereer het SAS-token opnieuw met behulp van Storage Explorer: Maak in Azure Storage Explorer een nieuw beleid en een nieuw SAS-token op basis van dat beleid. Maak de aanmeldingsgegevens opnieuw aan met het nieuwe SAS-token en probeer de back-up opnieuw uit te voeren. Zie bekende problemen met BACKUP TO URL voor meer informatie. Zorg ervoor dat uw netwerkbeveiligingsgroep (NSG) of firewall binnenkomende en uitgaande verbindingen toestaat op poort 1433 en 443.
Fout 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote name could not be resolved. U ziet dit bericht als er een onjuiste referentie, geheim of SAS-sleutel is gebruikt om de back-up te configureren. Verwijder de aanmeldgegevens en maak ze opnieuw aan. Gebruik SAS voor SQL Server 2016 (13.x) en latere versies.
Fout 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (400) Bad Request. U kunt dit oplossen door de minimale TLS-versie voor het opslagaccount te wijzigen in 1.0 (minimale TLS-versie voor >>).
Exceptiebericht: The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request. Identificeer in Azure Storage Explorer de blobs van 1 TB, verbreek de lease, verwijder de blob en voer de back-upbewerking opnieuw uit.
Fout: The remote server returned an error: (403) Forbidden. Maak het opslagaccount, de referenties en het SAS-token opnieuw om het probleem op te lossen.
Backup is mislukt tijdens het gebruik van een onderhoudsplan. Onderhoudsplannen kunnen af en toe mislukken. Voer de equivalente back-up rechtstreeks uit met T-SQL. Als de T-SQL-back-up slaagt, plant u deze als een SQL Server Agent taak in plaats van een onderhoudsplan te gebruiken.
back-up is mislukt omdat de VM-limieten zijn bereikt. Als u foutmeldingen krijgt dat de schijf-IOPS-/VM-limiet is bereikt, kunnen back-ups trager worden of mislukken. Als u IOPS-/VM-limieten wilt bewaken, gebruikt u Azure Monitor Metrische gegevens en wijzigt u indien nodig het formaat van de VM/schijf om het probleem op te lossen.