SQL Server säkerhetskopiering till URL för Microsoft Azure Blob Storage metodtips och felsökning

gäller för:SQL ServerAzure SQL Managed Instance

Den här artikeln innehåller metodtips och felsökningstips för SQL Server säkerhetskopiering och återställning till Microsoft Azure Blob Storage.

Mer information om hur du använder Azure Blob Storage för SQL Server säkerhetskopierings- eller återställningsåtgärder finns i:

Hantera säkerhetskopior

Följande lista innehåller allmänna rekommendationer för att hantera säkerhetskopior:

  • Använd ett unikt filnamn för varje säkerhetskopia för att förhindra att blobarna skrivs över av misstag.

  • När du skapar en container anger du åtkomstnivån till privat så att endast användare eller konton som kan tillhandahålla nödvändig autentiseringsinformation kan läsa eller skriva blobarna i containern.

  • För SQL Server databaser på en instans av SQL Server som körs i en Azure virtuell dator använder du ett lagringskonto i samma region som den virtuella datorn för att undvika kostnader för dataöverföring mellan regioner. Att använda samma region garanterar också optimala prestanda för säkerhetskopierings- och återställningsåtgärder.

  • Misslyckad säkerhetskopieringsaktivitet kan resultera i en ogiltig säkerhetskopieringsfil. Identifiera säkerhetskopieringar som misslyckats regelbundet och ta bort blobfilerna. Mer information finns i Ta bort säkerhetskopierade blobfiler med aktiva leasingavtal.

  • Använd alternativet WITH COMPRESSION för att minimera lagringskostnader och kostnader för lagringstransaktioner och för att minska säkerhetskopieringstiden.

  • Ange argumenten MAXTRANSFERSIZE och BLOCKSIZE till de värden som beskrivs i SQL Server säkerhetskopiering till URL för Azure Blob Storage.

  • Du kan säkerhetskopiera för att blockera blobar med varje lagringsredundans (till exempel LRS, ZRS, GRS, RA-GRS och RA-GZRS).

Hantera stora filer

SQL Server säkerhetskopieringsoperationen använder flera trådar för att optimera dataöverföringen till Azure Blob Storage. Prestanda beror dock på faktorer som ISV-bandbredd och databasstorlek. Om du planerar att säkerhetskopiera stora databaser eller filgrupper från en lokal SQL Server databas testar du dataflödet först. Azure SLA:t för Storage anger maximala bearbetningstider för blobar som måste beaktas.

Använd det alternativ som WITH COMPRESSION rekommenderas i avsnittet Hantera säkerhetskopior när du säkerhetskopierar stora filer.

Felsöka säkerhetskopiering till eller återställning från en URL

Använd följande tips för att felsöka fel när du säkerhetskopierar till eller återställer från Azure Blob Storage.

Om du vill undvika fel från alternativ eller begränsningar som inte stöds granskar du begränsningarna och alternativen för BACKUP kommandona och RESTORE i SQL Server säkerhetskopiering och återställning med Azure Blob Storage.

Initieringen misslyckades

Parallella säkerhetskopieringar till samma blob gör att en av säkerhetskopiorna misslyckas med ett initiering misslyckades fel.

Det gick inte att utföra begäran på grund av ett I/O-enhetsfel

Överväg COMPRESSION, MAXTRANSFERSIZE, BLOCKSIZEoch flera URL-argument när du säkerhetskopierar stora databaser. Se Återställning av en VLDB till Azure Blob Storage.

Felet:

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.

Ett exempel på lösning:

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;

Meddelandefilstämpeln på enheten är inte justerad

När du återställer från en komprimerad säkerhetskopia kan följande fel visas:

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.

Åtgärda felet genom att utfärda satsen RESTORE på nytt med BLOCKSIZE = 65536.

Misslyckad säkerhetskopiering kan resultera i blobbar med aktiva leaseavtal

Fel vid säkerhetskopiering på grund av blobar som har aktivt lån på dem: Failed backup activity can result in blobs with active leases.

Om du försöker göra en säkerhetskopia igen kan säkerhetskopieringen misslyckas med ett fel som liknar följande utdata:

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.

Om du försöker köra en RESTORE-instruktion på en blobfil för säkerhetskopiering som har ett aktivt leasingavtal, misslyckas återställningsåtgärden med ett felmeddelande som liknar följande meddelande:

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

När det här felet inträffar tar du bort blobfilerna. Mer information om det här scenariot och hur du åtgärdar problemet finns i Ta bort blobfiler för säkerhetskopiering med aktiva arrenden.

OS-fel 50: Begäran stöds inte

När du säkerhetskopierar en databas kan det uppstå fel Operating system error 50(The request is not supported.) av följande skäl:

  • Det angivna lagringskontot är inte allmänt syfte V1/V2.
  • SAS-token (signatur för delad åtkomst) har en ? symbol i början. Ta i så fall bort symbolen.
  • Du kan inte ansluta till lagringskontot från den aktuella datorn med hjälp av Storage Explorer eller SQL Server Management Studio (SSMS).
  • Principen som tilldelats SAS-token har upphört att gälla. Skapa en ny princip med hjälp av Azure Storage Explorer och skapa antingen en ny SAS-token med hjälp av principen eller ändra autentiseringsuppgifterna och försök säkerhetskopiera igen.
  • Rotcertifikatet saknas i det betrodda rotcertifikatarkivet. Mer information finns i Azure Root Certificate Authorities.

Autentiseringsfel

Säkerhetskopiering till eller återställning från Azure Blob Storage kräver en autentiseringsuppgift som lagrar autentiseringsinformationen. SQL Server 2016 (13.x) och senare versioner använder en SAS-token (signatur för delad åtkomst) och Databasmotor för SQL Server matchar autentiseringsuppgifterna till container-URL:en automatiskt.

Fel som rör autentiseringsuppgifter kan generera följande felmeddelanden:

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

Undvik det här problemet genom att skapa autentiseringsuppgifterna om det inte finns. Ett exempel:

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

Autentiseringsuppgifterna finns, men inloggningen som kör säkerhetskopieringskommandot har inte behörighet att komma åt autentiseringsuppgifterna. Använd ett konto i db_backupoperator fast databasroll med Ändra eventuella behörigheter för autentiseringsuppgifter .

Informationen som lagras i autentiseringsuppgifterna måste matcha egenskapsvärdena för det Azure lagringskonto som du använder i säkerhetskopierings- och återställningsåtgärderna.

Proxyfel

Om du använder proxyservrar för att komma åt Internet kan följande problem uppstå:

Anslutningsbegränsning av proxyservrar

Proxyservrar kan ha inställningar som begränsar antalet anslutningar per minut. Säkerhetskopiering till URL är flertrådad och kan överskrida den här gränsen. Om den här gränsen överskrids stänger proxyservern anslutningen. Lös problemet genom att ändra proxyinställningarna så att SQL Server inte använder proxyn. I följande exempel visas felmeddelanden som du kan se i felloggen:

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.

Vanliga fel och lösningar

Utfärda Lösning
Fel 3063: Write to backup block blob device https://storageaccount/container/name.bak failed. Device has reached its limit of allowed blocks. Om du vill åtgärda det här problemet för fullständiga eller differentiella säkerhetskopior kan du strecka säkerhetskopieringsmålet med flera filer. Använd följande parametrar i säkerhetskopieringskommandot för alla säkerhetskopieringstyper: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536. Det här felet kan också inträffa om säkerhetskopian når den maximala storlek som stöds. I SQL Server 2022 (16.x) och tidigare versioner är till exempel den maximala säkerhetskopieringsstorleken 12,8 TB, beräknad som 64 ränder × 50 000 block × en 4 MB MAXTRANSFERSIZE.
Fel 3035: Differentiell säkerhetskopiering misslyckas för en eller flera databaser. Det här felet uppstår om du har konfigurerat Azure Backup för att säkerhetskopiera SQL-databaser eller en ögonblicksbild av en virtuell dator (VM), vilket inte skapar en copy-only-säkerhetskopia och gör att säkerhetskopieringar på begäran i din underhållsplan eller dina SQL Agent-jobb misslyckas. Åtgärda det här problemet genom att lägga till dessa registernycklar i de virtuella datorer som är värdar för SQL Server-instanser i registernyckeln [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT] och lägga till "USEVSSCOPYBACKUP"="TRUE".
Fel 3201: Cannot open backup device '<url>'. Operating system error 50(The request is not supported.) Återskapa SAS-token med hjälp av Storage Explorer: I Azure Storage Explorer skapar du en ny princip och en ny SAS-token från den principen. Återskapa autentiseringsuppgifterna med hjälp av den nya SAS-token och försök att säkerhetskopiera igen. Mer information finns i kända problem med BACKUP TO URL. Se till att nätverkssäkerhetsgruppen (NSG) eller brandväggen tillåter inkommande och utgående anslutning på portarna 1433 och 443.
Fel 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote name could not be resolved. Du ser det här meddelandet om en felaktig autentiserings-, hemlighets- eller SAS-nyckel användes för att konfigurera säkerhetskopian. Ta bort autentiseringsuppgiften och skapa den på nytt. För SQL Server 2016 (13.x) och senare versioner använder du SAS.
Fel 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (400) Bad Request. Lös problemet genom att ändra den lägsta TLS-versionen för lagringskontot till 1.0 (MinstaTLS-version för >>).
Undantagsmeddelande: The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request. I Azure Storage Explorer identifierar du 1 TB-blobarna, bryter lånet, tar bort bloben och försöker utföra säkerhetskopieringen igen.
Fel: The remote server returned an error: (403) Forbidden. Återskapa lagringskontot, autentiseringsuppgifterna och SAS-token för att lösa problemet.
Säkerhetskopieringen misslyckades när du använde en underhållsplan. Underhållsplaner kan misslyckas tillfälligt. Kör motsvarande säkerhetskopiering direkt med T-SQL. Om T-SQL-säkerhetskopieringen lyckas schemalägger du den som ett SQL Server Agent jobb i stället för att använda en underhållsplan.
Säkerhetskopieringen misslyckades på grund av att gränsen för virtuella datorer har nåtts. Om du får felmeddelanden om att diskens IOPS/VM-gräns har nåtts kan säkerhetskopieringar sakta ned eller misslyckas. Om du vill övervaka IOPS/VM-gränser använder du Azure Monitor Metrics och ändrar storlek på den virtuella datorn/disken om det behövs för att åtgärda problemet.