SQL Server: Bewährte Methoden und Problembehandlung für das Sichern über URL für Microsoft Azure Blob Storage

Gilt für:SQL ServerAzure SQL Managed Instance

Dieser Artikel enthält bewährte Methoden und Tipps zur Problembehandlung für SQL Server Sicherung und Wiederherstellung an Microsoft Azure Blob Storage.

Weitere Informationen zur Verwendung von Azure Blob Storage für SQL Server Sicherungs- oder Wiederherstellungsvorgänge finden Sie unter:

Verwalten von Sicherungen

Die folgende Liste enthält allgemeine Empfehlungen zur Verwaltung von Sicherungen:

  • Verwenden Sie einen eindeutigen Dateinamen für jede Sicherung, um versehentliches Überschreiben der Blobs zu verhindern.

  • Wenn Sie einen Container erstellen, legen Sie die Zugriffsstufe auf "Privat " fest, sodass nur Benutzer oder Konten, die die erforderlichen Authentifizierungsinformationen bereitstellen können, die Blobs im Container lesen oder schreiben können.

  • Verwenden Sie für SQL Server Datenbanken in einer Instanz von SQL Server, die in einem Azure virtuellen Computer ausgeführt wird, ein Speicherkonto in derselben Region wie der virtuelle Computer, um Datenübertragungskosten zwischen Regionen zu vermeiden. Wenn Sie innerhalb einer Region bleiben, erzielen Sie darüber hinaus optimale Leistung bei Sicherungs- und Wiederherstellungsvorgängen.

  • Eine fehlerhafte Sicherungsaktivität kann dazu führen, dass eine Sicherungsdatei unbrauchbar wird. Identifizieren Sie regelmäßig fehlerhafte Sicherungen, und löschen Sie die BLOB-Dateien. Weitere Informationen finden Sie unter Löschen von Blob-Sicherungsdateien mit aktiven Leases.

  • Verwenden Sie die WITH COMPRESSION Option, um Speicherkosten und Speichertransaktionskosten zu minimieren und die Sicherungszeit zu reduzieren.

  • Legen Sie die Argumente MAXTRANSFERSIZE und BLOCKSIZE auf die in SQL Server-Sicherung auf URL für Azure Blob Storage beschriebenen Werte fest.

  • Sie können in Blockblobs mit jeder Speicherredundanz sichern (z. B. LRS, ZRS, GRS, RA-GRS und RA-GZRS).

Behandlung großer Dateien

Der SQL Server Sicherungsvorgang verwendet mehrere Threads, um die Datenübertragung zu Azure Blob Storage zu optimieren. Die Leistung hängt jedoch von Faktoren wie ISV-Bandbreite und Datenbankgröße ab. Wenn Sie planen, große Datenbanken oder Dateigruppen aus einer lokalen SQL Server Datenbank zu sichern, testen Sie zuerst den Durchsatz. Die Azure SLA für den Speicher verfügt über maximale Verarbeitungszeiten für Blobs, die berücksichtigt werden sollen.

Verwenden Sie beim Sichern großer Dateien die im Abschnitt Sicherungen verwalten empfohlene Option WITH COMPRESSION.

Problembehandlung bei Sicherungs- oder Wiederherstellungsvorgängen über URLs

Verwenden Sie die folgenden Tipps, um Fehler beim Sichern oder Wiederherstellen von Azure Blob Storage zu beheben.

Um Fehler durch nicht unterstützte Optionen oder Einschränkungen zu vermeiden, überprüfen Sie die Einschränkungen und die unterstützten Optionen für die Befehle BACKUP und RESTORE in SQL Server-Sicherung und -Wiederherstellung mit Azure Blob Storage.

Fehler bei der Initialisierung

Parallele Sicherungen im selben Blob führen dazu, dass bei einer der Sicherungen die Meldung Fehler beim Initialisieren ausgegeben wird.

Die Anforderung konnte aufgrund eines E/A-Gerätefehlers nicht ausgeführt werden.

Berücksichtigen Sie beim Sichern großer Datenbanken COMPRESSION, MAXTRANSFERSIZE, BLOCKSIZE und mehrere URL-Argumente. Siehe Backing up a VLDB to Azure Blob Storage.

Der folgende Fehler:

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.

Ein Beispiel für eine Lösung:

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;

Dateimarkierung für Gerät ist nicht ausgerichtet

Bei der Wiederherstellung von einer komprimierten Sicherung kann eine Fehlermeldung mit etwa folgendem Wortlaut angezeigt werden:

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.

Um diesen Fehler zu beheben, geben Sie die Anweisung RESTORE erneut mit BLOCKSIZE = 65536 aus.

Eine fehlerhafte Sicherungsaktivität kann zu Blobs mit aktiven Leases führen

Fehler während der Sicherung aufgrund von Blobs mit aktiver Lease: Failed backup activity can result in blobs with active leases.

Wenn Sie die Backup-Anweisung erneut ausführen, kann der Sicherungsvorgang einen Fehler mit etwa folgendem Wortlaut verursachen:

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.

Wenn Sie versuchen, eine RESTORE-Anweisung für eine Sicherungsblobdatei auszuführen, für die eine aktive Lease besteht, schlägt der Wiederherstellungsvorgang mit einer Fehlermeldung ähnlich der folgenden fehl:

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

Wenn dieser Fehler auftritt, löschen Sie die BLOB-Dateien. Weitere Informationen zu diesem Szenario und Lösungsvorschläge finden Sie unter Löschen von Blob-Sicherungsdateien mit aktiven Leases.

Betriebssystemfehler 50: Die Anforderung wird nicht unterstützt.

Beim Sichern einer Datenbank kann der Fehler Operating system error 50(The request is not supported.) aus den folgenden Gründen auftreten:

  • Das angegebene Speicherkonto ist kein universelles V1/V2-Konto.
  • Das SAS-Token (Shared Access Signature) weist am Anfang ein ? Symbol auf. Wenn ja, entfernen Sie das Symbol.
  • Sie können keine Verbindung mit dem Speicherkonto vom aktuellen Computer herstellen, indem Sie Storage-Explorer oder SQL Server Management Studio (SSMS) verwenden.
  • Die dem SAS-Token zugewiesene Richtlinie ist abgelaufen. Erstellen Sie eine neue Richtlinie mithilfe von Azure Storage-Explorer, und erstellen Sie entweder ein neues SAS-Token mithilfe der Richtlinie, oder ändern Sie die Anmeldeinformationen, und versuchen Sie es erneut.
  • Das Stammzertifikat fehlt im Vertrauenswürdigen Stammzertifizierungsspeicher. Weitere Informationen finden Sie unter Azure Stammzertifizierungsstellen.

Authentifizierungsfehler

Das Sichern oder Wiederherstellen von Azure Blob Storage erfordert eine Anmeldeinformation, die die Authentifizierungsinformationen speichert. SQL Server 2016 (13.x) und spätere Versionen verwenden ein SAS-Token (Shared Access Signature), und die SQL Server-Datenbank-Engine ordnet die Anmeldeinformation der Container-URL automatisch zu.

Fehler im Zusammenhang mit Anmeldeinformationen können die folgenden Fehlermeldungen erzeugen:

Fehlernummer Meldung
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.

Um dieses Problem zu vermeiden, erstellen Sie die Anmeldeinformation, falls sie noch nicht vorhanden ist. Beispiel:

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

Die Anmeldeinformation ist vorhanden, aber das Anmeldekonto, unter dem der Sicherungsbefehl ausgeführt wird, verfügt nicht über die Berechtigungen zum Zugriff auf die Anmeldeinformationen. Verwenden Sie ein Konto in der festen Datenbankrolle db_backupoperator mit der Berechtigung Alter any credential.

Die in den Anmeldeinformationen gespeicherten Informationen müssen mit den Eigenschaftswerten des Azure Speicherkontos übereinstimmen, das Sie in den Sicherungs- und Wiederherstellungsvorgängen verwenden.

Proxyfehler

Wenn Sie über Proxyserver auf das Internet zugreifen, können folgende Probleme auftreten:

Verbindungsdrosselung durch Proxyserver

Proxyserver verfügen möglicherweise über Einstellungen, die die Anzahl der Verbindungen pro Minute begrenzen. Die Sicherung auf eine URL verwendet mehrere Threads und könnte diesen Grenzwert überschreiten. Wenn dieser Grenzwert überschritten wird, schließt der Proxyserver die Verbindung. Um dieses Problem zu beheben, ändern Sie die Proxyeinstellungen, damit SQL Server den Proxy nicht verwendet. Die folgenden Beispiele zeigen Fehlermeldungen, die möglicherweise im Fehlerprotokoll angezeigt werden:

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.

Häufige Fehler und Lösungen

Angelegenheit Lösung
Fehler 3063: Write to backup block blob device https://storageaccount/container/name.bak failed. Device has reached its limit of allowed blocks. Um dieses Problem für vollständige oder differenzielle Sicherungen zu beheben, stripen Sie Ihr Sicherungsziel mit mehreren Dateien. Verwenden Sie für alle Sicherungstypen die folgenden Parameter im Sicherungsbefehl: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536 Dieser Fehler kann auch auftreten, wenn die Sicherung die maximale unterstützte Größe erreicht. In SQL Server 2022 (16.x) und früheren Versionen beträgt die maximale Sicherungsgröße beispielsweise 12,8 TB, berechnet als 64 Streifen × 50.000 Blöcke × 4 MBMAXTRANSFERSIZE.
Fehler 3035: Differenzielle Sicherung schlägt für eine oder mehrere Datenbanken fehl. Dieser Fehler tritt auf, wenn Sie Azure Backup zum Sichern von SQL-Datenbanken oder einer VM-Momentaufnahme konfiguriert haben, die keine kopiegeschützte Sicherung erstellt, was dazu führt, dass der Wartungsplan oder der SQL-Agent-Auftrag bei Bedarfssicherungen fehlschlägt. Um dieses Problem zu beheben, fügen Sie diese Registrierungsschlüssel auf den VMs hinzu, die SQL Server-Instanzen hosten, und zwar unter dem Registrierungsschlüssel [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT], und fügen Sie "USEVSSCOPYBACKUP"="TRUE" hinzu.
Fehler 3201: Cannot open backup device '<url>'. Operating system error 50(The request is not supported.) Generieren Sie das SAS-Token mithilfe von Storage-Explorer neu: Erstellen Sie in Azure Storage-Explorer eine neue Richtlinie und ein neues SAS-Token aus dieser Richtlinie. Erstellen Sie die Anmeldeinformationen erneut, indem Sie das neue SAS-Token verwenden, und versuchen Sie es erneut. Weitere Informationen zu bekannten Problemen mit BACKUP TO URL finden Sie unter. Stellen Sie sicher, dass Ihre Netzwerksicherheitsgruppe (NSG) oder Firewall eingehende und ausgehende Verbindungen an den Ports 1433 und 443 zulässt.
Fehler 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote name could not be resolved. Diese Meldung wird angezeigt, wenn ein falscher Berechtigungsnachweis, ein falsches Geheimnis oder ein falscher SAS-Schlüssel für die Konfiguration des Backups verwendet wurde. Löschen Sie die Anmeldeinformationen und erstellen Sie sie neu. Verwenden Sie sas für SQL Server 2016 (13.x) und höhere Versionen.
Fehler 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (400) Bad Request. Ändern Sie zum Auflösen die minimale TLS-Version für das Speicherkonto auf 1.0 (Minimale TLS-Version für >>).
Ausnahmemeldung: The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request. Identifizieren Sie in Azure Storage-Explorer die 1-TB-Blobs, unterbrechen Sie die Lease, löschen Sie das Blob, und wiederholen Sie den Sicherungsvorgang.
Fehler: The remote server returned an error: (403) Forbidden. Erstellen Sie das Speicherkonto, die Anmeldedaten und das SAS-Token neu, um das Problem zu beheben.
Sicherungsfehler bei Verwendung eines Wartungsplans. Wartungspläne können zeitweise fehlschlagen. Führen Sie die entsprechende Sicherung direkt mit T-SQL aus. Wenn die T-SQL-Sicherung erfolgreich ist, planen Sie sie als SQL Server-Agent Auftrag, anstatt einen Wartungsplan zu verwenden.
Fehler bei der Sicherung, weil VM-Grenzwerte erreicht wurden. Wenn Sie die Fehlermeldung erhalten, dass das IOPS/VM-Limit des Datenträgers erreicht wurde, können Sicherungen langsamer werden oder fehlschlagen. Um IOPS/VM-Grenzwerte zu überwachen, verwenden Sie Azure Monitor Metrics und ändern Sie bei Bedarf die Größe des virtuellen Computers/Datenträgers, um das Problem zu beheben.