Dela via


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

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

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

Mer information om hur du använder Azure Blob Storage för säkerhetskopiering eller återställning av SQL Server finns i:

Hantera säkerhetskopior

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

  • Unikt filnamn för varje säkerhetskopia rekommenderas för att förhindra att blobarna skrivs över av misstag.

  • När du skapar en container bör du ange å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 på en virtuell Azure-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. Vi rekommenderar regelbunden identifiering av misslyckade säkerhetskopior och borttagning av blobfilerna. För mer information, se Ta bort säkerhetskopieringsblobfiler med aktiva leasingavtal.

  • Om du använder alternativet WITH COMPRESSION under säkerhetskopieringen kan du minimera dina lagringskostnader och kostnader för lagringstransaktioner. Det kan också minska den tid det tar att slutföra säkerhetskopieringsprocessen.

  • Ange argumenten MAXTRANSFERSIZE och BLOCKSIZE enligt rekommendationerna för SQL Server Backup till URL-adressen.

  • SQL Server är agnostisk för den typ av lagringsredundans som används. Säkerhetskopiering till sidblobar och blockblobar stöds av alla former av lagringsredundans (LRS/ZRS/GRS/RA-GRS/RA-GZRS, etc.).

Hantera stora filer

Säkerhetskopieringsåtgärden för SQL Server använder flera trådar för att optimera dataöverföringen till Azure Blob Storage. Prestandan beror dock på olika faktorer, till exempel ISV-bandbredd och databasens storlek. Om du planerar att säkerhetskopiera stora databaser eller filgrupper från en lokal SQL Server-databas bör du utföra viss dataflödestestning först. Azure serviceavtal för lagring har maximala bearbetningstider för blobar som du kan ta hänsyn till.

Att använda alternativet WITH COMPRESSION enligt rekommendationerna i avsnittet Hantera säkerhetskopior är viktigt när du säkerhetskopierar stora filer.

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

Följande är några snabba sätt att felsöka fel när du säkerhetskopierar till eller återställer från Azure Blob Storage.

Om du vill undvika fel på grund av alternativ eller begränsningar som inte stöds läser du listan med begränsningar och stöd för information om BACKUP- och RESTORE kommandon i artikeln SQL Server Backup and Restore with Microsoft Azure Blob Storage.

Initieringen misslyckades

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

  • I SQL Server 2016 (13.x) och senare versioner föredras blockblob för säkerhetskopiering till URL.

  • Om du använder sidblobar med BACKUP TO URLkan du använda Spårningsflagga 3051 för att aktivera loggning till en specifik fellogg med följande format i: BackupToUrl-\<instname>-\<dbname>-action-\<PID>.log, där \<action> är något av följande alternativ:

    • DB
    • FILELISTONLY
    • LABELONLY
    • HEADERONLY
    • VERIFYONLY

Du kan också hitta information genom att granska Loggboken för Windows under Programloggar med namnet SQLBackupToUrl.

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 Säkerhetskopiering 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.
Reissue the Restore statement with the same block size used to create the backupset: '65536' looks like a possible value.

Lös det här felet genom att återutge RESTORE-instruktionen med BLOCKSIZE = 65536 angivet.

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 en säkerhetskopieringsinstruktion försöks på nytt kan säkerhetskopieringen misslyckas med ett felmeddelande som liknar följande:

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 ett försök att använda en återställningsåtgärd görs på en säkerhetskopieringsblobfil som har ett aktivt leasingavtal, misslyckas återställningsåtgärden med ett felmeddelande som liknar det följande:

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

När ett sådant fel inträffar måste blobfilerna tas bort. Mer information om det här scenariot och hur du åtgärdar det här problemet finns i Ta bort blobfiler för säkerhetskopiering med aktiva leasingavtal.

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 hade en ? symbol i början av token när autentiseringsuppgifterna skapades. Om ja tar du bort den.
  • Den aktuella anslutningen 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 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

WITH CREDENTIAL är ett nytt alternativ som krävs för att säkerhetskopiera till eller återställa från Azure Blob Storage.

Fel som rör autentiseringsuppgifter kan vara följande: The credential specified in the **BACKUP** or **RESTORE** command does not exist.

För att undvika det här problemet kan du inkludera T-SQL-instruktioner för att skapa autentiseringsuppgifterna om det inte finns någon i säkerhetskopieringsinstruktionen. Följande är ett exempel som du kan använda:

IF NOT EXISTS (
   SELECT *
   FROM sys.credentials
   WHERE credential_identity = 'mycredential'
)
CREATE CREDENTIAL [<credential name>]
   WITH IDENTITY = 'mystorageaccount',
      SECRET = '<storage access key>';

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

Kontrollera lagringskontots namn och nyckelvärden. Informationen som lagras i autentiseringsuppgifterna måste matcha egenskapsvärdena för det Azure Storage-konto som du använder i säkerhetskopierings- och återställningsåtgärderna.

400-fel (felaktig begäran)

Med SQL Server 2012 (11.x) kan det uppstå ett fel när du utför en säkerhetskopia som liknar följande utdata:

Backup to URL received an exception from the remote endpoint. Exception Message:
The remote server returned an error: (400) Bad Request.

Detta orsakas av den TLS-version som stöds av Azure Storage-kontot. Ändra den TLS-version som stöds eller med hjälp av den lösning som anges i KB4017023.

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 en process med flera trådar och kan därför överskrida den här gränsen. Om detta händer stoppar proxyservern anslutningen. Lös problemet genom att ändra proxyinställningarna så att SQL Server inte använder proxyn. Följande är några exempel på de typer eller 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.

Om du använder sidblobar aktiverar du utförlig loggning med hjälp av spårningsflaggan 3051. Du kan också se följande meddelande i loggarna: HTTP status code 502, HTTP Status Message Proxy Error (The number of HTTP requests per minute exceeded the configured limit. Contact your ISA Server administrator.)

Standardproxyinställningarna har inte hämtats

Ibland hämtas inte standardinställningarna som orsakar proxyautentiseringsfel, till exempel:

A nonrecoverable I/O error occurred on file "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (407)* **Proxy Authentication Required.

Lös problemet genom att skapa en konfigurationsfil som gör att processen säkerhetskopiering till URL kan använda standardproxyinställningarna med hjälp av följande steg:

  1. Skapa en konfigurationsfil med namnet BackuptoURL.exe.config med följande XML-innehåll:

    <?xml version ="1.0"?>
    <configuration>
        <system.net>
            <defaultProxy enabled="true" useDefaultCredentials="true">
                <proxy usesystemdefault="true" />
            </defaultProxy>
        </system.net>
    </configuration>
    
  2. Placera konfigurationsfilen i mappen Binn i SQL Server-instansen. Om min SQL Server till exempel är installerad på datorns C enhet placerar du konfigurationsfilen i C:\Program Files\Microsoft SQL Server\MSSQL13.\<InstanceName>\MSSQL\Binn.

  3. BackuptoURL.exe anropas inte när du använder SAS-nycklar, men utlöses när du använder en åtkomstnyckel. Kontrollera att du använder åtkomstnycklar, eller så kan du få följande fel:

    Operativsystemfel 50(Begäran stöds inte.)

Vanliga fel och lösningar

Utfärda Lösning
Fel 3063: Det gick inte att skriva till en blockblobenhet https://storageaccount/container/name.bak för säkerhetskopiering. Enheten har nått gränsen för tillåtna block. Åtgärda problemet genom att randa säkerhetskopieringen mål med flera filer och se till att använda följande parametrar i kommandot för säkerhetskopiering: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536.
Fel 3035: Differentiell säkerhetskopiering misslyckas för en eller flera databaser. Detta inträffar om du har konfigurerat Azure Backup-tjänsten att säkerhetskopiera SQL-databaser eller en ögonblicksbild av en virtuell dator (VM), som inte skapar en säkerhetskopia med endast kopiering, vilket gör att din underhållsplan eller SQL-agentjobbet på begäran misslyckas. Åtgärda detta genom att lägga till dessa registernycklar till 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: säkerhetskopiering misslyckas med – Operativsystemfel 50 (begäran stöds inte). Återskapa sas-token (signatur för delad åtkomst) med Storage Explorer: Du kan skapa en ny princip med Hjälp av Azure Storage Explorer och skapa en ny SAS-token med den principen från Azure Storage Explorer. Återskapa autentiseringsuppgifterna med den här nya SAS-token som genererats från Azure Storage och försök säkerhetskopiera igen. Mer information finns om kända problem vid säkerhetskopiering till URL i . Kontrollera att nätverkssäkerhetsgruppen (NSG) och/eller brandväggen tillåter inkommande och utgående anslutning på portarna 1433 och 443.
Fel 3271: Säkerhetskopiering misslyckas på grund av ett fel relaterat till TLS – Säkerhetskopiering till URL mottog ett undantagsfel från fjärrslutpunkten. Detta kan inträffa i SQL Server-versionerna 2012, 2014 och 2016. Säkerhetskopiering till en URL för Microsoft Azure Blob Storage-tjänsten är inte kompatibel med TLS 1.2 och kan åtgärdas genom att följa anvisningarna i KB4017023.
Fel 3271: Säkerhetskopiering till URL mottog ett undantag från fjärrslutpunkten. Undantagsmeddelande: Fjärrnamnet kunde inte matchas. Du ser det här meddelandet om en felaktig autentiserings-, hemlighets- eller SAS-nyckel användes för att konfigurera säkerhetskopian. Släpp autentiseringsuppgifterna och skapa den igen. För SQL Server 2012/2014 använder du lagringskontoidentitet och åtkomstnyckel och för SQL Server 2016 och senare versioner använder du SAS.
Fel 18210: Undantag: Fjärrservern returnerade ett fel: (400) Felaktig begäran. Lös problemet genom att ändra den lägsta TLS-versionen för lagringskontot till 1.0 (Lagringskonto>Konfiguration>Lägsta TLS-version), eller aktivera stark kryptografi enligt beskrivningen i KB4017023.
undantagsmeddelande: Fjärrservern returnerade ett fel: (412) Det finns för närvarande ett leasing-avtal på bloben och inget lease-ID angavs i begäran. Identifiera blobarna i Azure Storage Explorer med storleken 1 TB, bryt lånet , ta bort blobenoch försök sedan utföra säkerhetskopieringen igen.
Fel: Fjärrservern returnerade ett fel: (403) Förbjudet. Återskapa lagringskontot, autentiseringsuppgifterna och SAS-token för att lösa problemet.
Säkerhetskopiering för 1 TB-databas misslyckas på SQL Server 2012/2014. Säkerhetskopieringar på 1 TB är en känd begränsning på sidblobar före SQL Server 2016 (13.x). Använd säkerhetskopieringskomprimering genom att lägga till satsen "WITH COMPRESSION" i T-SQL-säkerhetskopieringssatsen eller uppgradera SQL Server-instansen till SQL Server 2016 (13.x) och senare versioner.
Fel: Säkerhetskopiering till URL stötte på ett undantag från fjärrslutpunkten. Undantagsmeddelande: Fjärrservern returnerade ett fel: (416) Det angivna sidintervallet är ogiltigt. Du kan se detta om du använder SQL Server 2012 (11.x) och SQL Server 2014 (12.x) och säkerhetskopieringsstorleken ökar till 1 TB. Stripa dina säkerhetskopior och/eller använd komprimering av säkerhetskopior för att lösa.
Säkerhetskopieringen misslyckades när du använde en underhållsplan. Det finns några buggar med underhållsplanen. Prova att använda T-SQL för att köra säkerhetskopieringen. Om T-SQL fungerar kan du skapa ett SQL Agent-jobb som ska köras för att säkerhetskopiera dina databaser.
Säkerhetskopieringen misslyckades på grund av att gränsen för virtuella datorer har nåtts. Om du får fel om att diskens IOPS/VM-gräns har nåtts kan säkerhetskopieringarna sakta ned eller misslyckas. Om du vill övervaka IOPS/VM-gränser använder du Azure Monitor-mått och ändrar storlek på den virtuella datorn/disken om det behövs för att åtgärda problemet.
Fjärrservern returnerade ett fel: (409) Konflikt för SQL Server 2012/2014" Lagringskonton med hierarkisk namnrymd är utrustade för blockblobar, inte sidblobar. Lagringskonton utan den här funktionen ska inte användas för säkerhetskopiering till en URL i SQL Server 2014 (12.x).