Sdílet prostřednictvím


Osvědčené postupy a řešení potíží se zálohováním SQL Serveru na adresu URL pro Microsoft Azure Blob Storage

platí pro:SQL Serverazure SQL Managed Instance

Tento článek obsahuje osvědčené postupy a tipy pro řešení potíží se zálohováním a obnovením SQL Serveru do služby Microsoft Azure Blob Storage.

Další informace o použití služby Azure Blob Storage pro operace zálohování nebo obnovení SQL Serveru najdete v tématu:

Správa záloh

Následující seznam obsahuje obecná doporučení pro správu záloh:

  • Doporučuje se použít jedinečný název souboru pro každou zálohu, aby se zabránilo náhodnému přepsání dat.

  • Při vytváření kontejneru byste měli nastavit úroveň přístupu na privátních, takže objekty blob v kontejneru můžou číst nebo zapisovat jenom uživatelé nebo účty, které můžou poskytovat požadované ověřovací informace.

  • Pro databáze SQL Serveru na instanci SQL Serveru běžící na virtuálním počítači Azure použijte účet úložiště ve stejné oblasti jako virtuální počítač, abyste se vyhnuli nákladům na přenos dat mezi oblastmi. Použití stejné oblasti také zajišťuje optimální výkon operací zálohování a obnovení.

  • Neúspěšná aktivita zálohování může vést k neplatnému záložnímu souboru. Doporučujeme pravidelnou identifikaci neúspěšných záloh a odstranění souborů typu blob. Další informace najdete v tématu Odstranění souborů záložních objektů blob s aktivními leasingy.

  • Pomocí možnosti WITH COMPRESSION během zálohování můžete minimalizovat náklady na úložiště a náklady na transakce úložiště. Může také zkrátit dobu potřebnou k dokončení procesu zálohování.

  • Nastavte MAXTRANSFERSIZE a BLOCKSIZE argumenty podle doporučení v zálohování SQL Serveru na adresu URL.

  • SQL Server je nezávislý na typu využité redundance úložiště. Zálohování stránkových a blokových objektů blob je podporováno pro všechny druhy redundance úložiště (LRS/ZRS/GRS/RA-GRS/RA-GZRS atd.).

Zpracování velkých souborů

Operace zálohování SQL Serveru používá k optimalizaci přenosu dat do služby Azure Blob Storage více vláken. Výkon ale závisí na různých faktorech, jako je šířka pásma isV a velikost databáze. Pokud plánujete zálohovat velké databáze nebo skupiny souborů z místní databáze SQL Serveru, měli byste nejprve provést testování propustnosti. Azure SLA pro úložiště má maximální doby zpracování pro objekty blob, které můžete vzít v úvahu.

Použití možnosti WITH COMPRESSION podle doporučení v části Spravovat zálohy je důležité při zálohování velkých souborů.

Řešení potíží se zálohováním nebo obnovením z URL

Následuje několik rychlých způsobů řešení chyb při zálohování nebo obnovení ze služby Azure Blob Storage.

Pokud se chcete vyhnout chybám kvůli nepodporovaným možnostem nebo omezením, projděte si seznam omezení a podporu BACKUP a RESTORE informací o příkazech v článku zálohování a obnovení SQL Serveru pomocí služby Microsoft Azure Blob Storage.

Inicializace selhala

Paralelní zálohování do stejného objektu blob způsobí selhání jedné ze záloh s chybou Inicializace selhala.

  • V SQL Serveru 2016 (13.x) a novějších verzích je blokový blob upřednostňovaný pro zálohování na URL.

  • Pokud používáte objekty blob stránky s BACKUP TO URL, můžete pomocí příznaku trasování 3051 zapnout protokolování do konkrétního protokolu chyb v následujícím formátu: BackupToUrl-\<instname>-\<dbname>-action-\<PID>.log, kde \<action> je jedna z následujících možností:

    • DB
    • FILELISTONLY
    • LABELONLY
    • HEADERONLY
    • VERIFYONLY

Informace najdete také v prohlížeči událostí systému Windows v části Protokoly aplikací s názvem SQLBackupToUrl.

Požadavek se nepodařilo provést kvůli chybě vstupně-výstupního zařízení.

Při zálohování velkých databází zvažte COMPRESSION, MAXTRANSFERSIZE, BLOCKSIZEa více argumentů adresy URL. Viz Zálohování databáze VLDB do služby Azure Blob Storage.

Chyba:

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.

Příklad řešení:

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;

Značka Souboru zprávy na zařízení není zarovnaná

Při obnovování z komprimované zálohy se může zobrazit následující chyba:

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.

Pokud chcete tuto chybu vyřešit, znovu spusťte příkaz RESTORE se zadaným BLOCKSIZE = 65536.

Neúspěšná aktivita zálohování může vést k objektům blob s aktivním pronájmem.

Při zálohování došlo k chybě kvůli objektům blob s aktivním pronájmem: Failed backup activity can result in blobs with active leases.

Pokud se znovu spustí příkaz zálohování, operace zálohování může selhat s chybou podobnou následujícímu výstupu:

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.

Pokud se pokusí provést příkaz obnovení na záložním souboru objektu blob, který má aktivní pronájem, operace obnovení selže s chybou podobnou následující:

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

Pokud k takové chybě dojde, je potřeba odstranit soubory objektů blob. Další informace o tomto scénáři a o tom, jak tento problém vyřešit, viz Odstranění záložních souborů blob s aktivními zapůjčeními.

Chyba operačního systému 50: Požadavek se nepodporuje.

Při zálohování databáze se může zobrazit chyba Operating system error 50(The request is not supported) z následujících důvodů:

  • Zadaný účet úložiště není účtem pro obecné účely V1/V2.
  • Token SAS měl na začátku symbol ?, když byly přihlašovací údaje vytvořeny. Pokud ano, odeberte ho.
  • Není možné se připojit k účtu úložiště z aktuálního počítače pomocí Storage Exploreru nebo SQL Server Management Studio (SSMS).
  • Platnost zásady přiřazené k tokenu SAS vypršela. Vytvořte novou zásadu pomocí Průzkumníka služby Azure Storage a buď vytvořte nový token SAS pomocí zásad, nebo upravte přihlašovací údaje a zkuste je zálohovat znovu.
  • V úložišti důvěryhodných kořenových certifikátů chybí kořenový certifikát. Další informace najdete v tématu kořenových certifikačních autorit Azure.

Chyby ověřování

WITH CREDENTIAL je nová možnost, která se vyžaduje k zálohování nebo obnovení ze služby Azure Blob Storage.

Selhání související s přihlašovacími údaji můžou být následující: The credential specified in the **BACKUP** or **RESTORE** command does not exist.

Pokud se chcete tomuto problému vyhnout, můžete zahrnout příkazy T-SQL k vytvoření přihlašovacích údajů, pokud v příkazu backup neexistuje. Tady je příklad, který můžete použít:

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

Přihlašovací údaje existují, ale přihlašovací jméno, které se používá ke spuštění příkazu zálohování, nemá oprávnění pro přístup k přihlašovacím údajům. Použijte účet v roli db_backupoperator s oprávněními Změnit libovolné přihlašovací údaje.

Ověřte název účtu úložiště a hodnoty klíčů. Informace uložené v přihlašovacích údajích musí odpovídat hodnotám vlastností účtu úložiště Azure, který používáte v operacích zálohování a obnovení.

Chyby 400 (Chybný požadavek)

Při použití SQL Serveru 2012 (11.x) může dojít k chybě při zálohování podobné následujícímu výstupu:

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

Příčinou je verze protokolu TLS podporovaná účtem úložiště Azure. Změna podporované verze protokolu TLS nebo použití alternativního řešení uvedeného v KB4017023.

Chyby proxy serveru

Pokud pro přístup k internetu používáte proxy servery, můžou se zobrazit následující problémy:

Omezování připojení pomocí proxy serverů

Proxy servery můžou mít nastavení, která omezují počet připojení za minutu. Proces zálohování na adresu URL je proces s více vlákny, a proto může tento limit přesát. Pokud k tomu dojde, proxy server připojení ukonče. Pokud chcete tento problém vyřešit, změňte nastavení proxy serveru tak, aby SQL Server nepoužívá proxy. Tady je několik příkladů typů nebo chybových zpráv, které se můžou zobrazit v protokolu chyb:

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.

Pokud používáte page blob, zapnete podrobné protokolování pomocí příznaku trasování 3051, může se v protokolech zobrazit také následující zpráva: 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.)

Výchozí nastavení proxy serveru se nezachytí

Někdy se výchozí nastavení neberou v úvahu, což způsobuje chyby ověřování proxy, například:

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.

Pokud chcete tento problém vyřešit, vytvořte konfigurační soubor, který umožňuje procesu zálohování na adresu URL použít výchozí nastavení proxy serveru pomocí následujících kroků:

  1. Vytvořte konfigurační soubor s názvem BackuptoURL.exe.config s následujícím obsahem XML:

    <?xml version ="1.0"?>
    <configuration>
        <system.net>
            <defaultProxy enabled="true" useDefaultCredentials="true">
                <proxy usesystemdefault="true" />
            </defaultProxy>
        </system.net>
    </configuration>
    
  2. Umístěte konfigurační soubor do složky Binn instance SQL Serveru. Pokud je například sql Server nainstalovaný na C jednotce počítače, umístěte konfigurační soubor do C:\Program Files\Microsoft SQL Server\MSSQL13.\<InstanceName>\MSSQL\Binn.

  3. BackuptoURL.exe se při použití klíčů SAS nevolá, ale aktivuje se při použití přístupového klíče . Ujistěte se, že používáte přístupové klíče, nebo se může zobrazit následující chyba:

    Chyba operačního systému 50 (Požadavek není podporován.)

Běžné chyby a řešení

Problém Řešení
Chyba 3063: zápis do zařízení pro zálohování objektů blob bloku https://storageaccount/container/name.bak selhal. Zařízení dosáhlo limitu povolených bloků. Pokud chcete tento problém vyřešit, prokládejte zálohovací cíl pomocí více souborů a ujistěte se, že v příkazu zálohování použijte následující parametry: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536.
Chyba 3035: rozdílové zálohování selže u jedné nebo více databází. K tomu dochází v případě, že jste nakonfigurovali službu Azure Backup pro zálohování databází SQL nebo snímků virtuálního počítače (VM), což nevytváří zálohu pouze jako kopii, což způsobí selhání záloh na vyžádání v rámci plánu údržby nebo úloh agenta SQL. Tento problém vyřešíte tak, že tyto klíče registru do virtuálních počítačů, které hostují instance SQL Serveru v klíči registru, [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT] a přidáte "USEVSSCOPYBACKUP"="TRUE".
Chyba 3201: zálohování selže s chybou operačního systému 50 (požadavek se nepodporuje). Znovu vygenerujte token sdíleného přístupového podpisu (SAS) pomocí Průzkumníka služby Storage: Můžete vytvořit novou zásadu pomocí Průzkumníka služby Azure Storage a vytvořit nový token SAS s použitím této zásady z Průzkumníka služby Azure Storage. znovu vytvořte přihlašovací údaje pomocí tohoto nového tokenu SAS vygenerovaného ze služby Azure Storage a zkuste znovu zálohovat. Pro další informace se podívejte na známé problémy s uvedením zálohování na URL v části . Ujistěte se, že vaše síťová skupina zabezpečení (NSG) a/nebo brána firewall umožňuje příchozí a odchozí spojení na portech 1433 a 443.
Chyba 3271: Zálohování selže kvůli chybě PROTOKOLU TLS – Zálohování na adresu URL obdrželo výjimku ze vzdáleného koncového bodu. K tomu může dojít na SQL Serveru verze 2012, 2014 a 2016. Zálohování na URL služby Microsoft Azure Blob Storage není kompatibilní s protokolem TLS 1.2 a problém lze vyřešit podle pokynů v KB4017023.
Chyba 3271: Zálohování na adresu URL přijalo výjimku ze vzdáleného koncového bodu. Zpráva o výjimce: Vzdálený název nelze přeložit. Tato zpráva se zobrazí, pokud se ke konfiguraci zálohování použil nesprávný klíč přihlašovacích údajů, tajného klíče nebo SAS. Odstraňte přihlašovací údaje a znovu ho vytvořte. Pro SQL Server 2012/2014 použijte identitu účtu úložiště a přístupový klíč a pro SQL Server 2016 a novější verze použijte SAS.
Chyba 18210: Výjimka: Vzdálený server vrátil chybu: (400) Chybný požadavek. Pokud chcete tento problém vyřešit, změňte minimální verzi protokolu TLS pro účet úložiště na 1.0 (účet úložiště>konfigurace>minimální verze protokolu TLS) nebo povolení silné kryptografie, jak je uvedeno v KB4017023.
Zpráva o výjimce: Vzdálený server vrátil chybu: (412) V objektu blob je aktuálně zapůjčení a v požadavku nebyla zadána žádná ID zapůjčení. Identifikujte objekty blob v Průzkumníku služby Azure Storage s velikostí 1 TB, přerušte zápůjčku, odstraňte objekt bloba opakujte operaci zálohování.
Chyba: Vzdálený server vrátil chybu: (403) Zakázáno. Pokud chcete tento problém vyřešit, vytvořte znovu účet úložiště, přihlašovací údaje a token SAS.
zálohování databáze s 1 TB selže na SQL Serveru 2012/2014. Zálohy o velikosti 1 TB jsou známé omezení na objektech blob stránky před SQL Serverem 2016 (13.x). Pomocí komprese záloh přidejte klauzuli WITH COMPRESSION do příkazu zálohování T-SQL nebo upgradujte instanci SQL Serveru na SQL Server 2016 (13.x) a novější verze.
Chyba : Zálohování na adresu URL přijalo výjimku ze vzdáleného koncového bodu. Zpráva o výjimce: Vzdálený server vrátil chybu: (416) Zadaný rozsah stránek je neplatný. Může se zobrazit, pokud používáte SQL Server 2012 (11.x) a SQL Server 2014 (12.x) a velikost zálohování se zvýší na 1 TB. Odstraňte záložní soubory nebo použijte kompresi zálohování k vyřešení.
zálohování selhalo při použití plánu údržby. V plánu údržby je několik chyb. Zkuste k provedení zálohování použít T-SQL. Pokud T-SQL funguje, můžete vytvořit úlohu agenta SQL, která se spustí pro zálohování databází.
zálohování selhalo kvůli dosažení limitů virtuálních počítačů. Pokud dochází k chybám, že došlo k dosažení limitu počtu vstupně-výstupních operací za sekundu disku nebo virtuálního počítače, zálohování může zpomalit nebo selhat. Pokud chcete monitorovat limity vstupně-výstupních operací za sekundu nebo virtuálního počítače, použijte metriky služby Azure Monitor a v případě potřeby změňte velikost virtuálního počítače nebo disku a problém vyřešte.
Vzdálený server vrátil chybu: (409) Konflikt pro SQL Server 2012/2014" Účty úložiště s hierarchickým oborem názvů jsou vybaveny pro blokové blob, nikoli pro stránkové blob. Účty úložiště bez této funkce by se neměly používat pro adresu URL BACKUP TO v SQL Serveru 2014 (12.x).