Megosztás a következőn keresztül:


Oktatóanyag: Az Azure Blob Storage használata az SQL Serverrel

A következőkre vonatkozik: SQL Server 2016 (13.x) és újabb verziók

Ez az oktatóanyag segít megérteni, hogyan használhatja az Azure Blob Storage-t adatfájlokhoz és biztonsági mentésekhez az SQL Server 2016 (13.x) és újabb verzióiban.

Az Azure Blob Storage támogatása az SQL Serverben az SQL Server 2012 (11.x) Service Pack 1 CU2-ben jelent meg, és a későbbi verziókban is bővült. A funkció funkcióinak és előnyeinek áttekintéséért tekintse meg a Microsoft Azure SQL Server-adatfájljait.

Ez az oktatóanyag bemutatja, hogyan dolgozhat SQL Server-adatfájlokkal az Azure Blob Storage-ban több szakaszban. Minden szakasz egy adott tevékenységre összpontosít, és a szakaszokat egymás után kell elvégeznie. Először megtudhatja, hogyan hozhat létre új tárolót a Blob Storage-ban tárolt hozzáférési szabályzattal és közös hozzáférésű jogosultságkóddal. Ezután megtudhatja, hogyan hozhat létre SQL Server-hitelesítő adatokat az SQL Server és az Azure Blob Storage integrálásához. Ezután biztonsági másolatot készít egy adatbázisról a Blob Storage-ba, és visszaállítja azt egy Azure-beli virtuális gépre. Ezután az SQL Server fájl-pillanatkép tranzakciónaplójának biztonsági mentését használva visszaállíthatja egy időpontra és egy új adatbázisra. Végül az oktatóanyag bemutatja a metaadatrendszer által tárolt eljárások és függvények használatát a fájl-pillanatképek biztonsági mentésének megértéséhez és használatához.

Előfeltételek

Az oktatóanyag elvégzéséhez ismernie kell az SQL Server biztonsági mentési és visszaállítási alapelveit, valamint a T-SQL szintaxisát.

Az oktatóanyag használatához szüksége lesz egy Azure Storage-fiókra, az SQL Server Management Studio (SSMS), a helyszíni SQL Server-példányhoz való hozzáférésre, az SQL Server 2016 (13.x) vagy újabb verzióját futtató Azure-beli virtuális géphez (VM) való hozzáférésre, valamint egy adatbázisra AdventureWorks2025 . Emellett a kiadáshoz BACKUP használt fióknak és RESTORE a parancsok db_backupoperator adatbázis-szerepkörben kell lennie a hitelesítő adatok engedélyeinek módosításával .

Fontos

Az SQL Server nem támogatja az Azure Data Lake Storage-t. Győződjön meg arról, hogy a hierarchikus névtér nincs engedélyezve az oktatóanyaghoz használt tárfiókon.

1 – Tárolt hozzáférési szabályzat és megosztott hozzáférési tár létrehozása

Ebben a szakaszban egy Azure PowerShell-szkripttel hoz létre megosztott hozzáférési aláírást egy Azure Blob Storage-tárolón egy tárolt hozzáférési szabályzat használatával.

Megjegyzés:

Ez a szkript az Azure PowerShell 5.0.10586 használatával íródott.

A közös hozzáférésű jogosultságkód egy URI, amely korlátozott hozzáférési jogosultságokat biztosít tárolókhoz, blobokhoz, üzenetsorokhoz vagy táblákhoz. A tárolt hozzáférési szabályzatok további szintű vezérlést biztosítanak a megosztott hozzáférésű jogosultságkódok felett a kiszolgáló oldalán, beleértve a hozzáférés visszavonását, lejártát vagy kiterjesztését. Az új fejlesztés használatakor létre kell hoznia egy szabályzatot egy legalább olvasási, írási és listázási jogosultsággal rendelkező tárolón.

Tárolt hozzáférési szabályzatot és megosztott hozzáférési aláírást az Azure PowerShell, az Azure Storage SDK, az Azure REST API vagy egy külső segédprogram használatával hozhat létre. Ez az oktatóanyag bemutatja, hogyan végezheti el ezt a feladatot egy Azure PowerShell-szkripttel. A szkript a Resource Manager üzemi modelljét használja, és a következő új erőforrásokat hozza létre

  • Erőforráscsoport
  • Tároló fiók
  • Azure Blob Storage-tároló
  • SAS-szabályzat

Ez a szkript több változó deklarálásával kezdődik az előző erőforrások nevének és a következő kötelező bemeneti értékek nevének megadásához:

  • Más erőforrásobjektumok elnevezésére használt előtagnév
  • Előfizetés neve
  • Adatközpont helye

A szkript a 2. lépésben használt megfelelő CREATE CREDENTIAL utasítás létrehozásával fejeződik be – SQL Server-hitelesítő adatok létrehozása közös hozzáférésű jogosultságkód használatával. Ez az utasítás a vágólapra lesz másolva, és megjelenik a konzolon.

Ha szabályzatot szeretne létrehozni a tárolón, és létre szeretne hozni egy közös hozzáférésű jogosultságkódot (SAS), kövesse az alábbi lépéseket:

  1. Nyissa meg a Windows PowerShellt vagy a Windows PowerShell ISE-t (lásd a korábbi verziókövetelményeket).

  2. Szerkessze, majd hajtsa végre a következő szkriptet:

    # Define global variables for the script
    $prefixName = '<a prefix name>'               # used as the prefix for the name for various objects
    $subscriptionID = '<your subscription ID>'    # the ID  of subscription name you will use
    $locationName = '<a data center location>'    # the data center region you will use
    $storageAccountName = $prefixName + 'storage' # the storage account name you will create or use
    $containerName = $prefixName + 'container'    # the storage container name to which you will attach the SAS policy with its SAS token
    $policyName = $prefixName + 'policy'          # the name of the SAS policy
    
    # Set a variable for the name of the resource group you will create or use
    $resourceGroupName = $prefixName + 'rg'
    
    # Add an authenticated Azure account for use in the session
    Connect-AzAccount
    
    # Set the tenant, subscription and environment for use in the rest of
    Set-AzContext -SubscriptionId $subscriptionID
    
    # Create a new resource group - comment out this line to use an existing resource group
    New-AzResourceGroup -Name $resourceGroupName -Location $locationName
    
    # Create a new Azure Resource Manager storage account - comment out this line to use an existing Azure Resource Manager storage account
    New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Type Standard_RAGRS -Location $locationName
    
    # Get the access keys for the Azure Resource Manager storage account
    $accountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName
    
    # Create a new storage account context using an Azure Resource Manager storage account
    $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].Value
    
    # Creates a new container in Blob Storage
    $container = New-AzStorageContainer -Context $storageContext -Name $containerName
    
    # Sets up a Stored Access Policy and a Shared Access Signature for the new container
    $policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -StartTime $(Get-Date).ToUniversalTime().AddMinutes(-5) -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission rwld
    
    # Gets the Shared Access Signature for the policy
    $sas = New-AzStorageContainerSASToken -name $containerName -Policy $policyName -Context $storageContext
    Write-Host 'Shared Access Signature= '$($sas.Substring(1))''
    
    # Sets the variables for the new container you just created
    $container = Get-AzStorageContainer -Context $storageContext -Name $containerName
    $cbc = $container.CloudBlobContainer
    
    # Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature
    Write-Host 'Credential T-SQL'
    $tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='SHARED ACCESS SIGNATURE', SECRET='{1}'" -f $cbc.Uri, $sas
    Set-Clipboard -Value $tSql
    Write-Host $tSql
    
    # Once you're done with the tutorial, remove the resource group to clean up the resources.
    # Remove-AzResourceGroup -Name $resourceGroupName
    
  3. A szkript befejeződése után az CREATE CREDENTIAL utasítás a vágólapon lesz a következő szakaszban való használatra.

2 – SQL Server-hitelesítő adatok létrehozása közös hozzáférésű jogosultságkód használatával

Ebben a szakaszban egy hitelesítő adatot hoz létre a biztonsági információk tárolásához, amelyet az SQL Server használ az előző lépésben létrehozott Azure Blob Storage-tárolóba való íráshoz és olvasáshoz.

Az SQL Server-hitelesítő adatok olyan objektumok, amelyek az SQL Serveren kívüli erőforráshoz való csatlakozáshoz szükséges hitelesítési információk tárolására szolgálnak. A hitelesítő adatok az Azure Blob Storage-tároló URI-elérési útját és a tároló közös hozzáférésű jogosultságkódját tárolják.

SQL Server-hitelesítő adatok létrehozásához kövesse az alábbi lépéseket:

  1. Indítsa el az SSMS-eket.

  2. Nyisson meg egy új lekérdezési ablakot, és csatlakozzon az adatbázismotor SQL Server-példányához a helyszíni környezetben.

  3. Az új lekérdezési ablakban illessze be az utasítást az CREATE CREDENTIAL 1. szakasz megosztott hozzáférési aláírásával, és hajtsa végre a szkriptet.

    A szkript a következő kódhoz hasonlóan néz ki.

    /* Example:
          USE master
          CREATE CREDENTIAL [https://msfttutorial.blob.core.windows.net/containername]
          WITH IDENTITY='SHARED ACCESS SIGNATURE'
          , SECRET = 'sharedaccesssignature'
         GO */
    USE master;
    
    CREATE CREDENTIAL [https://<storage-account>.blob.core.windows.net/<container-name>]
    -- this name must match the container path, start with https and must not contain a forward slash at the end
        WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
        -- this is a mandatory string and should not be changed
        SECRET = 'sharedaccesssignature';
        -- this is the shared access signature key that you obtained in section 1.
    GO
    
  4. Az összes elérhető hitelesítő adat megtekintéséhez futtassa a következő utasítást a példányhoz csatlakoztatott lekérdezési ablakban:

    SELECT *
    FROM sys.credentials;
    
  5. Nyisson meg egy új lekérdezési ablakot, és csatlakozzon az adatbázismotor SQL Server-példányához az Azure-beli virtuális gépen.

  6. Az új lekérdezési ablakban illessze be az utasítást az CREATE CREDENTIAL 1. szakasz megosztott hozzáférési aláírásával, és hajtsa végre a szkriptet.

  7. Ismételje meg az 5. és a 6. lépést minden további SQL Server-példány esetében, amelyhez hozzá szeretne férni a tárolóhoz.

3 – Adatbázis biztonsági mentése URL-re

Ebben a szakaszban biztonsági másolatot készít az AdventureWorks2025 SQL Server-példány adatbázisról az 1. szakaszban létrehozott tárolóra.

Adatbázis blobtárolóba való biztonsági mentéséhez kövesse az alábbi lépéseket:

  1. Indítsa el az SSMS-eket.

  2. Nyisson meg egy új lekérdezési ablakot, és csatlakozzon az SQL Server-példányhoz az Azure-beli virtuális gépen.

  3. Másolja és illessze be a következő Transact-SQL szkriptet a lekérdezési ablakba. Módosítsa a tárfiók nevének és az 1. szakaszban megadott tárolónak megfelelő URL-címet, majd hajtsa végre ezt a szkriptet.

    -- To permit log backups, before the full database backup, modify the database to use the full recovery model.
    USE master;
    ALTER DATABASE AdventureWorks2022
        SET RECOVERY FULL;
    
    -- Back up the full AdventureWorks2022 database to the container that you created in section 1
    BACKUP DATABASE AdventureWorks2022
        TO URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_onprem.bak';
    
  4. Nyissa meg az Object Explorert, és csatlakozzon az Azure Storage-hoz a tárfiók és a fiókkulcs használatával.

    1. Bontsa ki a Tárolókat, bontsa ki az 1. szakaszban létrehozott tárolót, és ellenőrizze, hogy a 3. lépés korábbi biztonsági mentése megjelenik-e ebben a tárolóban.

    Képernyőkép az Azure Storage-fiókhoz való csatlakozás többhelyes folyamatáról.

4 – Adatbázis visszaállítása virtuális gépre URL-címről

Ebben a szakaszban visszaállítja az adatbázist az AdventureWorks2025 Azure-beli virtuális gépen található SQL Server-példányra.

Megjegyzés:

Az oktatóanyag egyszerűsége érdekében ugyanazt a tárolót használjuk az adatbázis biztonsági mentéséhez használt adatokhoz és naplófájlokhoz. Éles környezetben valószínűleg több tárolót és gyakran több adatfájlt is használna. Érdemes lehet a biztonsági mentést több blobra is szétszedni, hogy nagyobb biztonsági mentési teljesítményt nyújtson egy nagy adatbázis biztonsági mentésekor.

A AdventureWorks2025 adatbázis Azure Blob Storage-ból az Azure-beli virtuális gép SQL Server-példányába való visszaállításához kövesse az alábbi lépéseket:

  1. Indítsa el az SSMS-eket.

  2. Nyisson meg egy új lekérdezési ablakot, és csatlakozzon az adatbázismotor SQL Server-példányához az Azure-beli virtuális gépen.

  3. Másolja és illessze be a következő Transact-SQL szkriptet a lekérdezési ablakba. Módosítsa a tárfiók nevének és az 1. szakaszban megadott tárolónak megfelelő URL-címet, majd hajtsa végre ezt a szkriptet.

    -- Restore AdventureWorks2022 from URL to SQL Server instance using Azure Blob Storage for database files
    RESTORE DATABASE AdventureWorks2022
        FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_onprem.bak'
    WITH MOVE 'AdventureWorks2022_data' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Data.mdf',
         MOVE 'AdventureWorks2022_log' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Log.ldf';
         --, REPLACE
    
  4. Nyissa meg az Object Explorert, és csatlakozzon az Azure SQL Server-példányhoz.

  5. Az Object Explorerben bontsa ki az Adatbázisok csomópontot, és ellenőrizze, hogy az AdventureWorks2025 adatbázis vissza lett-e állítva (szükség esetén frissítse a csomópontot).

    1. Kattintson a jobb gombbal az AdventureWorks2025 elemre, és válassza a Tulajdonságok lehetőséget.

    2. Válassza Fájlok lehetőséget, és ellenőrizze, hogy a két adatbázisfájl elérési útjai az Azure Blob Storage-tároló blobjaira mutató URL-címek-e (ha elkészült, válassza a Mégse lehetőséget).

    Képernyőkép az AdventureWorks2022-adatbázis SSMS-éről az Azure-beli virtuális gépen.

  6. Az Object Explorerben csatlakozzon az Azure Storage-hoz.

    1. Bontsa ki a Tárolókat, bontsa ki az 1. szakaszban létrehozott tárolót, és győződjön meg arról, hogy a AdventureWorks2022_Data.mdf 3. lépés korábbi és AdventureWorks2022_Log.ldf újabb lépése megjelenik ebben a tárolóban, valamint a 3. szakasz biztonsági mentési fájljával együtt (szükség esetén frissítse a csomópontot).

    Képernyőkép az Objektumkezelőről az SSMS-ben, amely a tárolóban lévő adatfájlokat jeleníti meg az Azure-ban egy SQL Server-példány bejegyzése alatt.

5 – Adatbázis biztonsági mentése fájlszintű pillanatképpel

Ebben a szakaszban biztonsági másolatot készít az AdventureWorks2025 azure-beli virtuális gépen lévő adatbázisról fájl-pillanatkép biztonsági mentésével, hogy szinte azonnal készítsen biztonsági másolatot az Azure-pillanatképek használatával. A fájl-pillanatképek biztonsági mentésével kapcsolatos további információkért lásd: File-Snapshot Biztonsági másolatok adatbázisfájlokhoz az Azure

Ha a AdventureWorks2025 adatbázisról szeretne biztonsági másolatot készíteni a fájl-pillanatkép biztonsági mentésével, kövesse az alábbi lépéseket:

  1. Indítsa el az SSMS-eket.

  2. Nyisson meg egy új lekérdezési ablakot, és csatlakozzon az adatbázismotor SQL Server-példányához az Azure-beli virtuális gépen.

  3. Másolja, illessze be és hajtsa végre a következő Transact-SQL szkriptet a lekérdezési ablakban (ne zárja be ezt a lekérdezési ablakot – az 5. lépésben ismét végrehajtja ezt a szkriptet). Ez a rendszer által tárolt eljárás lehetővé teszi, hogy megtekintse a fájl pillanatképének meglévő biztonsági másolatait minden fájlhoz, amely egy adott adatbázist tartalmaz. Láthatja, hogy ehhez az adatbázishoz nincsenek fájl pillanatképek biztonsági másolatai.

    -- Verify that no file snapshot backups exist
    SELECT *
    FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');
    
  4. Másolja és illessze be a következő Transact-SQL szkriptet a lekérdezési ablakba. Módosítsa a tárfiók nevének és az 1. szakaszban megadott tárolónak megfelelő URL-címet, majd hajtsa végre ezt a szkriptet. Figyelje meg, milyen gyorsan történik a biztonsági mentés.

    -- Backup the AdventureWorks2022 database with FILE_SNAPSHOT
    BACKUP DATABASE AdventureWorks2022
       TO URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Azure.bak'
       WITH FILE_SNAPSHOT;
    
  5. Miután ellenőrizte, hogy a 4. lépésben lévő szkript sikeresen végrehajtotta-e a műveletet, futtassa újra a következő szkriptet. A fájl-pillanatkép biztonsági mentési művelete a 4. lépésben létrehozott fájl-pillanatképek mind az adatokról, mind a naplófájlról.

    -- Verify that two file-snapshot backups exist
    SELECT *
    FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');
    

    Képernyőkép az SSMS-ről a fn_db_backup_file_snapshots eredményeiről, pillanatképeket jelenítve meg.

  6. Az Object Explorerben az Azure-beli virtuális gép SQL Server-példányában bontsa ki a Adatbázisok csomópontot, és ellenőrizze, hogy a AdventureWorks2025 adatbázis vissza lett-e állítva erre a példányra (szükség esetén frissítse a csomópontot).

  7. Az Object Explorerben csatlakozzon az Azure Storage-hoz.

  8. Bontsa ki a Tárolókat, bontsa ki az 1. szakaszban létrehozott tárolót, és ellenőrizze, hogy a AdventureWorks2022_Azure.bak 4. lépés korábbi lépése jelenik-e meg ebben a tárolóban, valamint a 3. szakasz biztonsági mentési fájlját és a 4. szakasz adatbázisfájljait (szükség esetén frissítse a csomópontot).

    Képernyőkép az Object Explorerről az SSMS-ben, amelyen az Azure-beli pillanatkép biztonsági mentése látható.

6 – Tevékenységi és biztonsági mentési napló létrehozása a fájl-pillanatkép biztonsági mentés használatával

Ebben a szakaszban létrehoz egy tevékenységet az AdventureWorks2025 adatbázisban, és rendszeres időközönként hoz létre tranzakciónapló-biztonsági mentéseket fájl-pillanatkép biztonsági másolatok használatával. A fájlpillanatképek biztonsági mentésének használatáról további információt File-Snapshot Az Azure-adatbázisfájlok biztonsági másolatai című témakörben talál.

A AdventureWorks2025-adatbázisban végzett tevékenység létrehozásához és a tranzakciónaplók rendszeres biztonsági mentésének fájl-pillanatképek használatával történő létrehozásához kövesse az alábbi lépéseket:

  1. Indítsa el az SSMS-eket.

  2. Nyisson meg két új lekérdezési ablakot, és csatlakoztassa mindegyiket az adatbázismotor SQL Server-példányához az Azure-beli virtuális gépen.

  3. Másolja, illessze be és hajtsa végre a következő Transact-SQL szkriptet a lekérdezési ablakok egyikébe. A Production.Location táblázat 14 sort tartalmaz, mielőtt új sorokat adnánk hozzá a 4. lépésben.

    -- Verify row count at start
    SELECT COUNT(*)
    FROM AdventureWorks2022.Production.Location;
    
  4. Másolja és illessze be a következő két Transact-SQL szkriptet a két külön lekérdezési ablakba. Módosítsa a tárfiók nevének és az 1. szakaszban megadott tárolónak megfelelő URL-címet, majd hajtsa végre ezeket a szkripteket egyidejűleg külön lekérdezési ablakban. Ezek a szkriptek végrehajtása néhány percet vesz igénybe.

    -- Insert 30,000 new rows into the Production.Location table in the AdventureWorks2022 database in batches of 75
    DECLARE @count AS INT = 1, @inner AS INT;
    
    WHILE @count < 400
        BEGIN
            BEGIN TRANSACTION;
            SET @inner = 1;
            WHILE @inner <= 75
                BEGIN
                    INSERT INTO AdventureWorks2022.Production.Location (
                        Name,
                        CostRate,
                        Availability,
                        ModifiedDate
                    )
                    VALUES (NEWID(), .5, 5.2, GETDATE());
                    SET @inner = @inner + 1;
                END
            COMMIT TRANSACTION;
            WAITFOR DELAY '00:00:01';
            SET @count = @count + 1;
        END
    
    SELECT COUNT(*)
    FROM AdventureWorks2022.Production.Location;
    
    --take 7 transaction log backups with FILE_SNAPSHOT, one per minute, and include the row count and the execution time in the backup file name
    DECLARE @count INT=1, @device NVARCHAR(120), @numrows INT;
    WHILE @count <= 7
       BEGIN
             SET @numrows = (SELECT COUNT (*) FROM AdventureWorks2022.Production.Location);
             SET @device = 'https://<storage-account>.blob.core.windows.net/<container-name>/tutorial-' + CONVERT (varchar(10),@numrows) + '-' + FORMAT(GETDATE(), 'yyyyMMddHHmmss') + '.bak';
             BACKUP LOG AdventureWorks2022 TO URL = @device WITH FILE_SNAPSHOT;
             SELECT * from sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
          WAITFOR DELAY '00:1:00';
             SET @count = @count + 1;
       END;
    
  5. Tekintse át az első szkript kimenetét, és figyelje meg, hogy az utolsó sorszám most 29 939.

    Képernyőkép az SSMS-ről egy 29 939 sorszámú eredménykészletről.

  6. Tekintse át a második szkript kimenetét, és figyelje meg, hogy minden BACKUP LOG egyes utasítás végrehajtásakor két új fájlpillanatkép jön létre, egy fájl pillanatképe a naplófájlról és egy fájl pillanatképe az adatfájlról – összesen két fájl pillanatképe minden adatbázisfájlhoz. A második szkript befejezése után figyelje meg, hogy most összesen 16 fájl pillanatképe van, 8 minden adatbázisfájlhoz – egy az BACKUP DATABASE utasításból, egy pedig az BACKUP LOG utasítás minden végrehajtásához.

    Képernyőkép az SSMS-ről, amelyen a biztonsági mentési pillanatképek előzményei láthatók.

  7. Az Object Explorerben csatlakozzon az Azure Storage-hoz.

  8. Bontsa ki tárolók, bontsa ki az 1. szakaszban létrehozott tárolót, és ellenőrizze, hogy hét új biztonsági mentési fájl jelenik-e meg, valamint az előző szakaszok adatfájljai (szükség szerint frissítse a csomópontot).

    Képernyőkép az Object Explorerről az SSMS-ben több pillanatképtel az Azure Containerben.

7 – Adatbázis visszaállítása adott időpontra

Ebben a szakaszban visszaállítja az AdventureWorks2025 adatbázist a tranzakciónapló két biztonsági mentése közötti időpontra.

Hagyományos biztonsági mentések esetén, időpont szerinti visszaállításhoz, a teljes adatbázis biztonsági mentését, esetleg egy különbségi biztonsági mentést kell használnia, valamint az összes tranzakciós naplófájlt az időpontig és azt követően, ahová vissza szeretné állítani. A fájl-pillanatképek biztonsági mentéséhez csak a két szomszédos naplófájl biztonsági mentési fájlra van szüksége, amelyek a visszaállításhoz szükséges időt keretező célbejegyzéseket biztosítják. Csak két naplófájl-pillanatkép biztonsági mentési készlet szükséges, mert minden egyes naplómentés fájl pillanatképet hoz létre minden adat- és naplófájlból.

Ha egy adatbázist egy adott időpontra szeretne visszaállítani a fájl pillanatkép-biztonsági mentési készleteiből, kövesse az alábbi lépéseket:

  1. Indítsa el az SSMS-eket.

  2. Nyisson meg egy új lekérdezési ablakot, és csatlakozzon az adatbázismotor SQL Server-példányához az Azure-beli virtuális gépen.

  3. Másolja, illessze be és hajtsa végre a következő Transact-SQL szkriptet a lekérdezési ablakban. Ellenőrizze, hogy a Production.Location tábla 29 939 sorból áll-e, mielőtt visszaállítjuk egy olyan időpontra, amikor a 4. lépésben kevesebb sor van.

    -- Verify row count at start
    SELECT COUNT(*)
    FROM AdventureWorks2022.Production.Location;
    

    Képernyőkép az SSMS-eredményekről, amelyek 29 939 sorszámot mutatnak.

  4. Másolja és illessze be a következő Transact-SQL szkriptet a lekérdezési ablakba. Jelöljön ki két szomszédos naplófájl biztonsági mentési fájlt, és konvertálja a fájlnevet a szkripthez szükséges dátummá és időpontra. Módosítsa a tárfiók nevének és az 1. szakaszban megadott tárolónak megfelelő URL-címet. Adja meg az első és a második biztonsági mentési fájl nevét, adja meg az STOPAT idő formátumát June 26, 2018 01:48 PM, majd hajtsa végre ezt a szkriptet. A befejezés néhány percet vesz igénybe.

    -- restore and recover to a point in time between the times of two transaction log backups, and then verify the row count
    ALTER DATABASE AdventureWorks2022
        SET SINGLE_USER
        WITH ROLLBACK IMMEDIATE;
    
    RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<firstbackupfile>.bak'
        WITH NORECOVERY, REPLACE;
    
    RESTORE LOG AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<secondbackupfile>.bak'
        WITH RECOVERY, STOPAT = 'June 26, 2018 01:48 PM';
    
    ALTER DATABASE AdventureWorks2022
        SET MULTI_USER;
    
    -- get new count
    SELECT COUNT(*)
    FROM AdventureWorks2022.Production.Location;
    
  5. Tekintse át a kimenetet. A visszaállítás után a sorok száma 18 389, ami a napló biztonsági mentése 5 és 6 közötti sorszám (a sorok száma eltérő lehet).

    Képernyőkép 18 000 sorról.

8 – Visszaállítás új adatbázisként a napló biztonsági mentéséből

Ebben a szakaszban új adatbázisként állítja vissza az AdventureWorks2025 adatbázist egy fájl-pillanatkép tranzakciónapló biztonsági mentéséből.

Ebben a forgatókönyvben egy másik virtuális gépen lévő SQL Server-példány visszaállítását hajtja végre üzleti elemzés és jelentéskészítés céljából. Ha egy másik virtuális gépen egy másik példányra állítja vissza a feladatot, azzal a feladatot egy erre a célra dedikált és méretezett virtuális gépre terheli, és eltávolítja az erőforrásigényét a tranzakciós rendszerből.

A tranzakciónaplók fájl-pillanatkép-biztonsági mentéssel történő visszaállítása gyors, lényegesen gyorsabb, mint a hagyományos streamelési biztonsági másolatok esetében. A hagyományos streamelési biztonsági mentések esetén a teljes adatbázis biztonsági mentését, esetleg a különbségi biztonsági mentést és a tranzakciónapló biztonsági mentéseinek egy részét vagy egészét (vagy egy új teljes adatbázis biztonsági mentését) kell használnia. A fájl-pillanatkép naplóinak biztonsági mentései esetén azonban csak a legutóbbi napló biztonsági mentésére van szükség (vagy bármely más napló biztonsági mentésére vagy két szomszédos napló biztonsági mentésére, hogy az időponthoz tartozó időpontok két biztonsági mentési időpont között legyenek visszaállítva). Az egyértelműség kedvéért, csak egy naplófájl-pillanatkép biztonsági mentésre van szükség, ugyanis minden egyes fájl-pillanatkép-napló biztonsági mentés fájlsnapfot készít az egyes adatbázisfájlokról (minden adatfájlról és a naplófájlról).

Ha egy adatbázist egy tranzakciónapló mentéséből szeretne visszaállítani egy új adatbázisba fájlpillanatkép-mentéssel, kövesse az alábbi lépéseket:

  1. Indítsa el az SSMS-eket.

  2. Nyisson meg egy új lekérdezési ablakot, és csatlakozzon az adatbázismotor SQL Server-példányához egy Azure-beli virtuális gépen.

    Ha ez egy másik Azure-beli virtuális gép, mint amit az előző szakaszokban használt, győződjön meg arról, hogy követte a lépéseket a 2 - SQL Server hitelesítő adatok létrehozása közös hozzáférési aláírássalútmutató szerint. Ha egy másik tárolóba szeretne visszaállítani, az új tárolóhoz kövesse az 1-es lépést - Tárolt hozzáférési szabályzat létrehozása és megosztott hozzáférésű tárhely készítése.

  3. Másolja és illessze be a következő Transact-SQL szkriptet a lekérdezési ablakba. Válassza ki a használni kívánt naplófájl biztonsági másolatát. Módosítsa a tárfiók nevének és az 1. szakaszban megadott tárolónak megfelelő URL-címet, adja meg a naplófájl biztonsági mentési fájljának nevét, majd hajtsa végre ezt a szkriptet.

    -- restore as a new database from a transaction log backup file
    RESTORE DATABASE AdventureWorks2022_EOM
        FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<logbackupfile.bak>'
    WITH MOVE 'AdventureWorks2022_data' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_EOM_Data.mdf',
         MOVE 'AdventureWorks2022_log' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_EOM_Log.ldf',
         RECOVERY;
         --, REPLACE
    
  4. Tekintse át a kimenetet, és ellenőrizze, hogy a visszaállítás sikeres volt-e.

  5. Az Object Explorerben csatlakozzon az Azure Storage-hoz.

  6. Bontsa ki Tárolók, bontsa ki az 1. szakaszban létrehozott tárolót (szükség esetén frissítse), és ellenőrizze, hogy az új adatok és naplófájlok megjelennek-e a tárolóban, valamint az előző szakaszok blobjai.

    Képernyőkép az SQL Server Management Studio Azure-tárolók tárolóböngészőjének képernyőképéről, amelyen az új adatbázis adatai és naplófájljai láthatók.

9 – Biztonsági mentési csoportok és fájl-pillanatképek biztonsági mentéseinek kezelése

Ebben a szakaszban egy biztonsági mentési csoportot töröl a sp_delete_backup rendszer által tárolt eljárással. Ez a rendszer által tárolt eljárás törli a biztonsági mentési fájlt és a fájl pillanatképét a biztonsági mentési csoporthoz társított összes adatbázisfájlon.

Megjegyzés:

Ha úgy próbál törölni egy biztonsági mentési csoportot, hogy törli a biztonsági mentési fájlt az Azure Blob Storage-tárolóból, csak magát a biztonsági mentési fájlt törli – a társított fájl pillanatképei megmaradnak. Ha ebben a forgatókönyvben találja magát, a sys.fn_db_backup_file_snapshots rendszerfüggvény használatával azonosíthatja az árva fájl pillanatképeinek URL-címét, és a sp_delete_backup_file_snapshot rendszer által tárolt eljárással törölheti az egyes árva fájlok pillanatképeit. További információ: File-Snapshot Biztonsági másolatok adatbázisfájlokhoz az Azure.

A fájl-pillanatkép biztonsági mentési készletének törléséhez kövesse az alábbi lépéseket:

  1. Indítsa el az SSMS-eket.

  2. Nyisson meg egy új lekérdezési ablakot, és csatlakozzon az adatbázismotor SQL Server-példányához az Azure-beli virtuális gépen (vagy bármely olyan SQL Server-példányhoz, amely rendelkezik olvasási és írási engedéllyel ezen a tárolón).

  3. Másolja és illessze be a következő Transact-SQL szkriptet a lekérdezési ablakba. Válassza ki a törölni kívánt napló biztonsági mentését a kapcsolódó fájlpillanatképekkel együtt. Módosítsa a tárfiók nevének és az 1. szakaszban megadott tárolónak megfelelő URL-címet, adja meg a naplófájl biztonsági mentési fájljának nevét, majd hajtsa végre ezt a szkriptet.

    EXECUTE sys.sp_delete_backup 'https://<storage-account>.blob.core.windows.net/<container-name>/tutorial-21764-20181003205236.bak';
    
  4. Az Object Explorerben csatlakozzon az Azure Storage-hoz.

  5. Bontsa ki tárolók, bontsa ki az 1. szakaszban létrehozott tárolót, és ellenőrizze, hogy a 3. lépésben használt biztonsági mentési fájl már nem jelenik-e meg ebben a tárolóban (szükség szerint frissítse a csomópontot).

    Képernyőkép az SQL Server Management Studios storage böngészőről, amelyen az Azure-tárolók és a tranzakciónapló biztonsági mentési blobjának törlése látható.

  6. Másolja, illessze be és hajtsa végre a következő Transact-SQL szkriptet a lekérdezési ablakban annak ellenőrzéséhez, hogy két fájl pillanatképe törölve lett-e.

    -- verify that two file snapshots have been removed
    SELECT *
    FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');
    

    Képernyőkép az SSMS eredménypaneljéről, amelyen két törölt fájl pillanatképe látható.

10 – Erőforrások eltávolítása

Ha végzett az oktatóanyaggal, és meg szeretné őrizni az erőforrásokat, mindenképpen törölje az oktatóanyagban létrehozott erőforráscsoportot.

Az erőforráscsoport törléséhez futtassa a következő PowerShell-kódot:

# Define global variables for the script
$prefixName = '<prefix name>' # should be the same as the beginning of the tutorial

# Set a variable for the name of the resource group you will create or use
$resourceGroupName = $prefixName + 'rg'

# Adds an authenticated Azure account for use in the session
Connect-AzAccount

# Set the tenant, subscription and environment for use in the rest of
Set-AzContext -SubscriptionId $subscriptionID

# Remove the resource group
Remove-AzResourceGroup -Name $resourceGroupName