SQL Server-Sicherung über URLs – bewährte Methoden und Problembehandlung
In diesem Thema werden bewährte Methoden und Tipps zur Problembehandlung beschrieben, die sich auf SQL Server-Sicherungs- und Wiederherstellungsvorgänge im Azure Blob-Dienst beziehen.
Weitere Informationen zur Verwendung des Azure Blob Storage-Diensts für SQL Server-Sicherungs- oder -Wiederherstellungsvorgänge finden Sie unter:
SQL Server-Sicherung und -Wiederherstellung mit dem Microsoft Azure Blob Storage Service
Lernprogramm: SQL Server Backup and Restore to Azure Blob Storage Service
Verwalten von Sicherungen
Die folgende Liste enthält allgemeine Empfehlungen zur Verwaltung von Sicherungen:
Für jede Sicherung sollte ein eindeutiger Dateiname verwendet werden, um zu verhindern, dass BLOBs versehentlich überschrieben werden.
Beim Erstellen eines Containers wird empfohlen, die Zugriffsebene auf Privatfestzulegen, sodass der Lese- oder Schreibzugriff auf Blobs im Container nur Benutzern oder Konten mit den erforderlichen Authentifizierungsinformationen gestattet ist.
Für SQL Server-Datenbanken auf einer Instanz von SQL Server, die in einer Azure Virtual Machine ausgeführt wird, verwenden Sie ein Speicherkonto in derselben Region wie die virtuelle Maschine, um Kosten für die Datenübertragung zwischen den 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. Es wird empfohlen, regelmäßig nach fehlerhaften Sicherungen zu suchen und die BLOB-Dateien zu löschen. Weitere Informationen hierzu finden Sie unter Löschen von Sicherungsblobdateien aktiver Lease.
Wenn Sie die Sicherung mit der
WITH COMPRESSION
-Option durchführen, können Sie die Speicherkosten und Speichertransaktionskosten minimieren. Darüber hinaus verkürzt die Option die Dauer des Sicherungsvorgangs.
Behandlung großer Dateien
Der SQL Server-Sicherungsvorgang verwendet mehrere Threads, um die Datenübertragung an Azure Blob Storage-Dienste zu optimieren. Die Leistung hängt jedoch von verschiedenen Faktoren ab wie der Bandbreite des unabhängigen Softwareherstellers (ISV) und der Größe der Datenbank. Wenn Sie beabsichtigen, große Datenbanken oder Dateigruppen von einer lokalen SQL Server-Datenbank zu sichern, sollten Sie zunächst den Durchsatz testen. Azure Storage SLAs verfügen über maximale Verarbeitungszeiten für Blobs, die Sie berücksichtigen können.
Die Verwendung der im Abschnitt Verwalten von Sicherungen empfohlenen
WITH COMPRESSION
-Option ist besonders beim Sichern umfangreicher Dateien von Bedeutung.
Problembehandlung bei Sicherungs- oder Wiederherstellungsvorgängen über URLs
Im Folgenden finden Sie einige schnelle Lösungen zur Behandlung von Sicherungs- und Wiederherstellungsfehlern im Azure Blob Storage-Dienst.
Um Fehler aufgrund nicht unterstützter Optionen oder Einschränkungen zu vermeiden, lesen Sie die Liste der Einschränkungen und die Unterstützung für SICHERUNGS- und WIEDERHERSTELLUNGSbefehle im Artikel "SQL Server Backup and Restore with Azure Blob Storage Service ".
Authentifizierungsfehler:
WITH CREDENTIAL ist eine neue Option, die zum Sichern oder Wiederherstellen aus dem Azure Blob Storage-Dienst erforderlich ist. In Zusammenhang mit Anmeldeinformationen können folgende Fehler auftreten:
Die im
BACKUP
-Befehl oderRESTORE
-Befehl angegebenen Anmeldeinformationen sind nicht vorhanden. Um dieses Problem zu vermeiden, können Sie T-SQL-Anweisungen zum Erstellen von Anmeldeinformationen einschließen, falls in der BACKUP-Anweisung keine Anmeldeinformationen enthalten sind. Beachten Sie das folgende Anwendungsbeispiel:IF NOT EXISTS (SELECT * FROM sys.credentials WHERE credential_identity = 'mycredential') CREATE CREDENTIAL <credential name> WITH IDENTITY = 'mystorageaccount' ,SECRET = '<storage access key> ;
Die Anmeldeinformationen sind zwar vorhanden, aber das Anmeldekonto zum Ausführen des Sicherungsbefehls verfügt über keine Berechtigung für den Zugriff auf die Anmeldeinformationen. Verwenden Sie ein Anmeldekonto der Rolle db_backupoperator mit Berechtigungen des Typs Beliebige Anmeldeinformationen ändern.
Überprüfen Sie den Namen des Speicherkontos und die Schlüsselwerte. Die in den Anmeldeinformationen gespeicherten Informationen müssen den Eigenschaftswerten Azure-Speicherkontos entsprechen, das Sie für Sicherungs- und Wiederherstellungsvorgänge verwenden.
Sicherungsfehler:
Parallele Sicherungen im selben Blob führen dazu, dass bei einer der Sicherungen die Meldung Fehler beim Initialisieren ausgegeben wird.
Verwenden Sie die folgenden Fehlerprotokolle, die Ihnen die Problembehandlung bei Sicherungsfehlern erleichtern:
Legen Sie das Ablaufverfolgungsflag 3051 wie folgt fest, um die Protokollierung in einem bestimmten Fehlerprotokoll zu aktivieren:
BackupToUrl-instname-dbname-action-PID<<>><>.log Dabei <> handelt es sich um eine der folgenden Aktionen:
DB
FILELISTONLY
LABELONLY
HEADERONLY
VERIFYONLY
Sie können auch Informationen finden, indem Sie das Windows-Ereignisprotokoll überprüfen – Unter Anwendungsprotokollen mit dem Namen "SQLBackupToUrl".
Bei der Wiederherstellung von einer komprimierten Sicherung kann eine Fehlermeldung mit etwa folgendem Wortlaut angezeigt werden:
SqlException 3284 aufgetreten. Schweregrad: 16; Status: 5
Das Nachrichtendateizeichen auf dem Gerät "https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak" ist nicht ausgerichtet. Geben Sie die RESTORE-Anweisung mit derselben Blockgröße, die zum Erstellen des Sicherungssatzes verwendet wurde, erneut aus: '65536' sieht wie ein möglicher Wert aus.Um diesen Fehler zu beheben, übergeben Sie die
BACKUP
-Anweisung erneut mitBLOCKSIZE = 65536
.
Sicherungsfehler aufgrund von BLOBs, die über eine aktive Leasedauer verfügen: Fehlerhafte Sicherungsaktivitäten können dazu führen, dass BLOBs eine aktive Leasedauer aufweisen.
Wenn die BACKUP-Anweisung erneut ausgeführt wird, kann ein Sicherungsvorgang einen Fehler mit etwa folgendem Wortlaut verursachen:
Für die Sicherung über URLs ist eine Ausnahme vom Remoteendpunkt eingegangen. Ausnahmemeldung: Der Remoteserver hat einen Fehler zurückgegeben: (412) Es gibt derzeit eine Lease für das Blob, und in der Anforderung wurde keine Lease-ID angegeben..
Wenn versucht wird, eine RESTORE-Anweisung für eine BLOB-Sicherungsdatei mit aktiver Leasedauer auszuführen, wird eine Fehlermeldung mit etwa folgendem Wortlaut angezeigt:
Ausnahmemeldung: Der Remoteserver hat einen Fehler zurückgegeben: (409) Konflikt...
Wenn dieser Fehler auftritt, müssen die BLOB-Dateien gelöscht werden. Weitere Informationen zu diesem Szenario und Lösungsvorschläge finden Sie unter Löschen von Sicherungsblobdateien mit aktiver Lease.
Proxyfehler
Wenn Sie über Proxyserver auf das Internet zugreifen, können folgende Probleme auftreten:
Durch Proxyserver gedrosselte Verbindungen:
Proxyserver können über Einstellungen verfügen, die die Anzahl der Verbindungen pro Minute begrenzen. Der URL-Sicherungsprozess ist ein Multithreadprozess und kann diese Begrenzung folglich überschreiten. In diesem Fall wird die Verbindung vom Proxyserver abgebrochen. Um das Problem zu beheben, ändern Sie die Proxyeinstellungen, damit der Proxy von SQL Server nicht verwendet wird. Im Folgenden einige Beispiele für Fehlertypen oder -meldungen, die im Fehlerprotokoll angezeigt werden können:
Schreiben sie auf "http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak" fehlgeschlagen: Die Sicherung auf URL hat eine Ausnahme vom Remoteendpunkt erhalten. Ausnahmemeldung: Von der Übertragungsverbindung können keine Daten gelesen werden: Die Verbindung wurde geschlossen.
In der Datei ist ein nicht behebbarer E/A-Fehler aufgetreten;http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" Fehler konnte nicht vom Remoteendpunkt erfasst werden.
Meldung 3013, Ebene 16, Status 1, Zeile 2
BACKUP DATABASE wird fehlerbedingt beendet.
BackupIoRequest::ReportIoError: Schreibfehler auf Sicherungsgerät 'http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak'. Betriebssystemfehler: Bei einer URL-Sicherung wurde eine Ausnahme vom Remoteendpunkt empfangen. Ausnahmemeldung: Von der Übertragungsverbindung können keine Daten gelesen werden: Die Verbindung wurde geschlossen.
Wenn Sie die ausführliche Protokollierung mit Ablaufverfolgungsflag 3051 aktivieren, können auch folgende Meldungen in den Protokollen angezeigt werden:
HTTP-Statuscode 502, HTTP Status Message Proxy Error ( Die Anzahl der HTTP-Anforderungen pro Minute hat den konfigurierten Grenzwert überschritten. Wenden Sie sich an Ihren ISA Server-Administrator. )
Standardproxyeinstellungen wurden nicht abgerufen:
Manchmal werden die Standardeinstellungen nicht aufgenommen, was zu Proxyauthentifizierungsfehlern wie dem unten gezeigten führt:In der Datei ist ein nicht behebbarer E/A-Fehler aufgetreten"http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" Die Sicherung auf DIE URL hat eine Ausnahme vom Remoteendpunkt erhalten. Ausnahmemeldung: Der Remoteserver hat einen Fehler zurückgegeben: (407) Proxyauthentifizierung erforderlich.
Um dieses Problem zu beheben, erstellen Sie mithilfe folgender Schritte eine Konfigurationsdatei, durch die beim URL-Sicherungsprozess die Standardproxyeinstellungen verwendet werden können:
Erstellen Sie eine Konfigurationsdatei mit dem Namen BackuptoURL.exe.config und folgender XML:
<?xml version ="1.0"?> <configuration> <system.net> <defaultProxy enabled="true" useDefaultCredentials="true"> <proxy usesystemdefault="true" /> </defaultProxy> </system.net> </configuration>
Speichern Sie die Konfigurationsdatei im Ordner Binn der SQL Server-Instanz. Wenn beispielsweise mein SQL Server auf dem Laufwerk C des Computers installiert ist, platzieren Sie die Konfigurationsdatei hier: C:\Programme\Microsoft SQL Server\MSSQL12.<InstanceName>\MSSQL\Binn.
Problembehandlung für die verwaltete SQL Server-Sicherung in Azure
Da SQL Server Managed Backup auf der URL-Sicherung aufbaut, gelten die in den vorherigen Abschnitten aufgeführten Tipps zur Fehlerbehebung für Datenbanken oder Instanzen, für die SQL Server Managed Backup verwendet wird. Informationen zur Problembehandlung von SQL Server Managed Backup zu Azure finden Sie in der Problembehandlung bei SQL Server Managed Backup in Azure.