SQL Server biztonsági másolat készítése URL-re a Microsoft Azure Blob Storage ajánlott eljárásai és hibaelhárítása

A következőre vonatkozik: :SQL ServerAzure SQL Managed Instance

Ez a cikk ajánlott eljárásokat és hibaelhárítási tippeket tartalmaz a Microsoft Azure Blob Storage SQL Server biztonsági mentéséhez és visszaállításához.

A biztonsági mentési vagy visszaállítási műveletek SQL Server Azure Blob Storage használatával kapcsolatos további információkért lásd:

Biztonsági másolatok kezelése

Az alábbi lista általános javaslatokat tartalmaz a biztonsági mentések kezelésére:

  • Minden biztonsági mentés egyedi fájlnevét javasoljuk, hogy megakadályozza a blobok véletlen felülírását.

  • Tároló létrehozásakor a hozzáférési szintet úgy kell beállítania, hogy privát, így csak azok a felhasználók vagy fiókok tudják olvasni vagy írni a blobokat a tárolóban, amelyek meg tudják adni a szükséges hitelesítési adatokat.

  • Az Azure virtuális gépen futó SQL Server példányban lévő SQL Server adatbázisok esetében használjon a virtuális géppel azonos régióban lévő tárfiókot, hogy elkerülje a régiók közötti adatátvitel költségeit. Ugyanannak a régiónak a használata biztosítja a biztonsági mentési és visszaállítási műveletek optimális teljesítményét is.

  • A sikertelen biztonsági mentési tevékenység érvénytelen biztonsági mentési fájlt eredményezhet. Javasoljuk a sikertelen biztonsági mentések rendszeres azonosítását és a blobfájlok törlését. További információért lásd: Aktív bérletekkel rendelkező biztonsági mentési blobfájlok törlése.

  • A biztonsági mentés során a WITH COMPRESSION lehetőség használatával minimalizálhatja a tárolási költségeket és a tárolási tranzakciók költségeit. Csökkentheti a biztonsági mentési folyamat befejezéséhez szükséges időt is.

  • Állítsa be a MAXTRANSFERSIZE és BLOCKSIZE argumentumokat az SQL Server Biztonsági mentés az URL-címre ajánlása szerint.

  • SQL Server a használt tárolóredundancia típusától függően agnosztikus. A lapblobok és blokkblobok biztonsági mentése minden tárolási redundancia esetében támogatott (LRS/ZRS/GRS/RA-GRS/RA-GZRS stb.).

Nagyméretű fájlok kezelése

Az SQL Server biztonsági mentési művelet több szálat használ az adatátvitel optimalizálásához az Azure Blob Storage-ba. A teljesítmény azonban különböző tényezőktől függ, például az ISV sávszélességétől és az adatbázis méretétől. Ha nagy méretű adatbázisokról vagy fájlcsoportokról szeretne biztonsági másolatot készíteni egy helyszíni SQL Server adatbázisból, először végezze el az átviteli sebesség tesztelését. Azure SLA for Storage tartalmazza a blobok maximális feldolgozási idejét, amelyet figyelembe vehet.

A WITH COMPRESSION szakaszban javasolt beállítás használata fontos a nagyméretű fájlok biztonsági mentésekor.

Az URL-címről történő biztonsági mentés vagy visszaállítás hibaelhárítása

Az alábbiakban bemutatunk néhány gyors módszert a hibák elhárítására a Azure Blob Storage biztonsági mentésekor vagy visszaállításakor.

A nem támogatott beállítások vagy korlátozások miatti hibák elkerülése érdekében tekintse át a BACKUP és RESTORE parancsok információinak korlátozásait és támogatását a SQL Server Biztonsági mentés és visszaállítás a Microsoft Azure Blob Storage című cikkben.

Az inicializálás nem sikerült

Az ugyanarra a blobra történő párhuzamos biztonsági mentések miatt az egyik biztonsági mentés meghiúsul egy Inicializálás sikertelen volt hiba miatt.

  • A SQL Server 2016 (13.x) és újabb verziókban a blokk-blob használata javasolt az URL-címre történő biztonsági mentéshez.

  • Ha BACKUP TO URL együtt lapblobokat használ, a 3051-es nyomkövetési jelzővel be lehet kapcsolni a naplózást egy adott hibanaplóba a következő formátummal: BackupToUrl-\<instname>-\<dbname>-action-\<PID>.log, ahol a \<action> az alábbi lehetőségek egyike:

    • DB
    • FILELISTONLY
    • LABELONLY
    • HEADERONLY
    • VERIFYONLY

Az információk megtekinthetők a Windows eseménymegtekintő alkalmazásban az Application naplók néven.

A kérés nem hajtható végre I/O-eszközhiba miatt.

Nagy adatbázisok biztonsági mentésekor fontolja meg a COMPRESSION, a MAXTRANSFERSIZE, a BLOCKSIZEés a több URL-argumentum használatát. Lásd VLDB mentése Azure Blob Storage-ra.

A hiba:

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éldafeloldás:

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;

Az eszköz üzenetfájl-jelzése nincs igazítva

Tömörített biztonsági másolatból való visszaállításkor a következő hiba jelenhet meg:

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.

A hiba megoldásához adja meg újra a RESTORE utasítást BLOCKSIZE = 65536 megadva.

A sikertelen biztonsági mentési tevékenység aktív bérleti szerződéssel rendelkező blobokat eredményezhet.

Hiba a biztonsági mentés során az aktív bérletet tartalmazó blobok miatt: Failed backup activity can result in blobs with active leases.

Ha a biztonsági mentési utasítás újra van etetve, a biztonsági mentési művelet meghiúsulhat az alábbi kimenethez hasonló hibával:

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.

Ha egy aktív bérlettel rendelkező biztonsági mentési blobfájlon próbál visszaállítási utasítást végrehajtani, a visszaállítási művelet az alábbihoz hasonló hibával meghiúsul:

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

Ilyen hiba esetén a blobfájlokat törölni kell. Erről a forgatókönyvről és a probléma megoldásáról további információt a "Biztonsági másolat blobfájlok törlése aktív zárolásokkal"című témakörben talál.

50-ös operációsrendszer-hiba: A kérés nem támogatott

Adatbázis biztonsági mentésekor a következő okokból Operating system error 50(The request is not supported) hiba jelenhet meg:

  • A megadott tárfiók nem általános célú V1/V2.
  • Az SAS-jogkivonatnak a ? szimbóluma volt az elején, amikor a hitelesítő adatokat létrehozták. Ha igen, távolítsa el.
  • Az aktuális kapcsolat nem tud csatlakozni a tárfiókhoz az aktuális gépről Storage Explorer vagy SQL Server Management Studio (SSMS) használatával.
  • Az SAS-jogkivonathoz rendelt szabályzat lejárt. Hozzon létre egy új szabályzatot Azure Storage Explorer használatával, és hozzon létre egy új SAS-jogkivonatot a szabályzat használatával, vagy módosítsa a hitelesítő adatokat, és próbálkozzon újra a biztonsági mentéssel.
  • A gyökértanúsítvány hiányzik a Megbízható Gyökértanúsítványok tárolóból. További információ: Azure főtanúsítvány-hatóságok.

Hitelesítési hibák

A WITH CREDENTIAL egy új lehetőség, amely a Azure Blob Storage biztonsági mentéséhez vagy visszaállításához szükséges.

A hitelesítő adatokkal kapcsolatos hibák a következők lehetnek: The credential specified in the **BACKUP** or **RESTORE** command does not exist.

A probléma elkerülése érdekében T-SQL-utasításokkal létrehozhatja a hitelesítő adatokat, ha az nem szerepel a biztonsági mentési utasításban. Az alábbi példa használható:

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

A hitelesítő adatok léteznek, de a biztonsági mentési parancs futtatásához használt bejelentkezés nem rendelkezik a hitelesítő adatok eléréséhez szükséges engedélyekkel. Használjon egy fiókot a db_backupoperator szerepkörben az Bármely hitelesítőadat- engedély módosítása lehetőséggel.

Ellenőrizze a tárfiók nevét és kulcsértékét. A hitelesítő adatokban tárolt adatoknak meg kell egyeznie a biztonsági mentési és visszaállítási műveletekben használt Azure tárfiók tulajdonságértékeivel.

400-ra (hibás kérelem) vonatkozó hibák

A 2012-SQL Server (11.x) használatakor a következő kimenethez hasonló biztonsági mentés végrehajtása során hiba fordulhat elő:

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

Ezt a Azure Storage-fiók által támogatott TLS-verzió okozza. A támogatott TLS-verzió módosítása vagy a KB4017023-ben felsorolt megoldások használata.

Proxyhibák

Ha proxykiszolgálókat használ az internethez való hozzáféréshez, a következő problémák léphetnek fel:

Kapcsolatszabályozás proxykiszolgálók által

A proxykiszolgálók olyan beállításokkal rendelkezhetnek, amelyek percenként korlátozzák a kapcsolatok számát. Az URL-címre történő biztonsági mentés többszálú folyamat, ezért túllépheti ezt a korlátot. Ha ez történik, a proxykiszolgáló leáll a kapcsolattal. A probléma megoldásához módosítsa a proxybeállításokat, hogy SQL Server ne használja a proxyt. Az alábbiakban néhány példát talál a hibanaplóban esetleg megjelenő típusokra vagy hibaüzenetekre:

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.

Lapblobok használata esetén a részletes naplózást a 3051 nyomkövetési jelzővel kapcsolhatja be, a naplókban a következő üzenet is megjelenhet: 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.)

Az alapértelmezett proxybeállítások nem vehetők fel

Előfordulhat, hogy a rendszer nem veszi fel az alapértelmezett beállításokat, és proxyhitelesítési hibákat okoz, például:

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.

A probléma megoldásához hozzon létre egy konfigurációs fájlt, amely lehetővé teszi, hogy a biztonsági mentés URL-címként történő feldolgozása az alapértelmezett proxybeállításokat használja az alábbi lépések végrehajtásával:

  1. Hozzon létre egy BackuptoURL.exe.config nevű konfigurációs fájlt a következő XML-tartalommal:

    <?xml version ="1.0"?>
    <configuration>
        <system.net>
            <defaultProxy enabled="true" useDefaultCredentials="true">
                <proxy usesystemdefault="true" />
            </defaultProxy>
        </system.net>
    </configuration>
    
  2. Helyezze a konfigurációs fájlt a SQL Server példány Binn mappájába. Ha például a SQL Server a gép C meghajtójára van telepítve, helyezze a konfigurációs fájlt C:\Program Files\Microsoft SQL Server\MSSQL13.\<InstanceName>\MSSQL\Binn.

  3. BackuptoURL.exe nem SAS-kulcsokhasználatakor hívjuk meg, de hozzáférési kulcshasználatakor aktiválódik. Győződjön meg arról, hogy hozzáférési kulcsokat használ, vagy a következő hibaüzenet jelenik meg:

    50-ös operációsrendszer-hiba (A kérés nem támogatott.)

Gyakori hibák és megoldások

Probléma Megoldás
3063-ás hiba: sikertelen Írás biztonsági mentési blokkblobeszközre https://storageaccount/container/name.bak. Az eszköz elérte az engedélyezett blokkok korlátját. A teljes vagy különbségi biztonsági mentések esetében a probléma megoldásához sztriptízelje a biztonsági mentési célt több fájllal. Minden biztonsági mentési típushoz használja a következő paramétereket a biztonsági mentési parancsban: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536. Ez a hiba akkor is előfordulhat, ha a biztonsági mentés eléri a maximálisan támogatott méretet. A 2022-es és korábbi SQL Server esetében például a biztonsági mentés maximális mérete 12,8 TB, ami úgy van kiszámítva, hogy 64 csík × 50 000 blokk × 4 MB MAXTRANSFERSIZE.
3035-ös hiba: különbségi biztonsági mentés meghiúsul egy vagy több adatbázis esetében. Ez akkor fordul elő, ha a Azure Backup szolgáltatást sql-adatbázisok vagy virtuálisgép-pillanatképek biztonsági mentésére konfigurálta, amely nem hoz létre csak másolati biztonsági másolatot, ami miatt a karbantartási terv vagy az SQL-ügynök feladat igény szerinti biztonsági mentése meghiúsul. A probléma megoldásához adja hozzá ezeket a beállításkulcsokat az SQL Server példányokat üzemeltető virtuális gépek beállításkulcsához [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT], és adja hozzá "USEVSSCOPYBACKUP"="TRUE".
3201-ös hiba: biztonsági mentés meghiúsul az 50-ös operációsrendszer-hibával (a kérés nem támogatott). A közös hozzáférésű jogosultságkód (SAS) jogkivonat újragenerálása a Storage Explorer használatával: létrehozhat egy új szabályzatot Azure Storage Explorer használatával, és létrehozhat egy új SAS-jogkivonatot ezzel a szabályzattal a Azure Storage Explorer. Hozza létre a hitelesítő adatokat ezzel a Azure Storage létrehozott új SAS-jogkivonattal, és próbálkozzon újra a biztonsági mentéssel. Az ismert problémák között további információ található a BACKUP TO URLalatt. Győződjön meg arról, hogy a hálózati biztonsági csoport (NSG) és/vagy tűzfal engedélyezi a bejövő és kimenő kapcsolatot az 1433-as és a 443-as porton.
3271-s hiba: biztonsági mentés TLS-hiba miatt meghiúsul – Az URL-címre történő biztonsági mentés kivételt kapott a távoli végponttól. Ez SQL Server 2012-ben, 2014-ben és 2016-os verziókban fordulhat elő. A Microsoft Azure Blob Storage szolgáltatás URL-címének biztonsági mentése nem kompatibilis a TLS 1.2-vel, és a KB4017023 utasításait követve javítható.
3271-es hiba: Biztonsági mentés URL-re kivételt adott a távoli végponttól. Kivételüzenet: A távoli név nem oldható fel. Ez az üzenet akkor jelenik meg, ha a biztonsági mentés konfigurálásához helytelen hitelesítőadat-, titkos vagy SAS-kulcsot használtak. Dobja el a hitelesítő adatokat, és hozza létre újra. A 2012/2014-es SQL Server esetén használja a tárfiók identitását és hozzáférési kulcsát és a SQL Server 2016-os és újabb verzióihoz használja az SAS.
18210-s hiba: kivétel: A távoli kiszolgáló hibát adott vissza: (400) Hibás kérés. A probléma megoldásához módosítsa a tárfiók minimális TLS-verzióját 1.0-ra (tárfiók>konfigurációs>A TLS minimális verziójának), vagy engedélyezze az erős titkosítást a KB4017023.
kivételüzenet: A távoli kiszolgáló hibát adott vissza: (412) Jelenleg bérlet van a blobon, és a kérelemben nem lett megadva bérletazonosító. Azonosítsa a Azure Storage Explorer 1 TB méretű blobokat, törje fel a bérletet, törölje a blobot, és próbálkozzon újra a biztonsági mentési művelettel.
hiba: A távoli kiszolgáló hibát adott vissza: (403) Tiltott. Hozza létre újra a tárfiókot, a hitelesítő adatokat és az SAS-jogkivonatot a probléma megoldásához.
Az 1 TB-os adatbázis biztonsági mentése a SQL Server 2012/2014-en sikertelen. Az 1 TB-os biztonsági mentések ismert korlátozás a SQL Server 2016 (13.x) előtti lap blobokon. A biztonsági mentés tömörítéséhez adja hozzá a "WITH COMPRESSION" záradékot a T-SQL biztonsági mentési utasításához, vagy frissítse a SQL Server-példányt SQL Server 2016-os (13.x) és újabb verziókra.
hiba: URL-címre történő biztonsági mentés kivételt jelzett a távoli végponttól. Kivételüzenet: A távoli kiszolgáló hibát adott vissza: (416) A megadott oldaltartomány érvénytelen. Ez akkor jelenhet meg, ha 2012 SQL Server (11.x) és 2014-SQL Server (12.x) van, és a biztonsági mentés mérete 1 TB-ra nő. Ossza fel a biztonsági mentési fájlokat, és/vagy használjon biztonsági mentési tömörítést a probléma megoldásához.
karbantartási terv használatakor a biztonsági mentés sikertelen volt. Van néhány hiba a karbantartási tervben. Próbálkozzon a T-SQL használatával a biztonsági mentés végrehajtásához. Ha a T-SQL működik, létrehozhat egy SQL Agent-feladatot az adatbázisok biztonsági mentéséhez.
biztonsági mentés meghiúsult, mert a virtuálisgép-korlátok elértek. Ha hibaüzenetet kap a lemez IOPS-/virtuálisgép-korlátjának elérésekor, a biztonsági mentések lelassulhatnak vagy sikertelenek lehetnek. Az IOPS/VM korlátainak monitorozásához használja a Azure Monitor Metrikákat, és szükség esetén méretezze át a virtuális gépet/lemezt a probléma megoldásához.
A távoli kiszolgáló hibát adott vissza: (409) Ütközés az SQL Server 2012/2014 esetében A hierarchikus névtérrel rendelkező tárfiókok blokkblobokhoz, nem lapblobokhoz vannak felszerelve. A funkció nélküli tárfiókok nem használhatók a BACKUP TO URL utasításhoz a SQL Server 2014 (12.x) verzióban.