Sdílet prostřednictvím


Kurz: Použití služby Azure Blob Storage s SQL Serverem

platí pro: SQL Server 2016 (13.x) a novější verze

Tento kurz vám pomůže pochopit, jak používat Azure Blob Storage pro datové soubory a zálohy v SQL Serveru 2016 a novějších verzích.

Podpora integrace SQL Serveru pro Azure Blob Storage začala jako vylepšení aktualizace SQL Server 2012 Service Pack 1 CU2 a dále vylepšena ve verzi SQL Server 2014 a SQL Server 2016. Přehled funkcí a výhod použití této funkce najdete v tématu datových souborů SQL Serveru v Microsoft Azure.

V tomto kurzu se dozvíte, jak pracovat s datovými soubory SQL Serveru ve službě Azure Blob Storage v několika částech. Každý oddíl se zaměřuje na konkrétní úlohu a oddíly by se měly dokončit postupně. Nejprve se dozvíte, jak ve službě Blob Storage vytvořit nový kontejner s uloženými zásadami přístupu a sdíleným přístupovým podpisem. Pak se dozvíte, jak vytvořit přihlašovací údaje SQL Serveru pro integraci SQL Serveru se službou Azure Blob Storage. Dále zálohujete databázi do služby Blob Storage a obnovíte ji na virtuální počítač Azure. Pak použijete zálohu snímků souborů transakčního protokolu SQL Serveru k obnovení v určitém bodu v čase a do nové databáze. Nakonec tento kurz předvede použití uložených procedur a funkcí meta data, které vám pomůžou porozumět zálohám snímků souborů a pracovat s jejich pomocí.

Požadavky

K dokončení tohoto kurzu musíte být obeznámeni se koncepty zálohování a obnovení SQL Serveru a syntaxí T-SQL.
Abyste mohli tento kurz použít, potřebujete účet úložiště Azure, SQL Server Management Studio (SSMS), přístup k místní instanci SQL Serveru, přístup k virtuálnímu počítači Azure s instancí SQL Serveru 2016 nebo novější a databázi AdventureWorks2022. Kromě toho by měl být účet použitý k vydání příkazů ZÁLOHOVÁNÍ a OBNOVENÍ v roli databáze db_backupoperator s oprávněním změnit libovolné přihlašovací údaje.

Důležitý

SQL Server nepodporuje Azure Data Lake Storage, zajistěte, že hierarchický obor názvů není povolen na účtu úložiště použitém pro účely tohoto kurzu.

1. Vytvoření uložených zásad přístupu a úložiště sdíleného přístupu

V této části použijete skript Azure PowerShellu k vytvoření sdíleného přístupového podpisu v kontejneru Azure Blob Storage pomocí uložených zásad přístupu.

Poznámka

Tento skript je napsaný pomocí Azure PowerShellu 5.0.10586.

Sdílený přístupový podpis je identifikátor URI, který uděluje omezená přístupová práva ke kontejnerům, objektům blob, frontám nebo tabulkám. Uložené zásady přístupu poskytují další úroveň kontroly nad sdílenými přístupovými podpisy na straně serveru, včetně odvolání, vypršení platnosti nebo rozšíření přístupu. Pokud používáte toto nové vylepšení, musíte v kontejneru vytvořit zásadu s alespoň právy ke čtení, zápisu a výpisu.

Uložené zásady přístupu a sdílený přístupový podpis můžete vytvořit pomocí Azure PowerShellu, sady Azure Storage SDK, rozhraní Azure REST API nebo nástroje třetí strany. Tento kurz ukazuje, jak k dokončení této úlohy použít skript Azure PowerShellu. Skript používá model nasazení Resource Manager a vytvoří následující nové prostředky.

  • Skupina prostředků
  • Účet úložiště
  • Kontejner pro Azure Blob Storage
  • Zásady SAS

Tento skript začíná deklarací řady proměnných, které určují názvy výše uvedených prostředků a názvy následujících požadovaných vstupních hodnot:

  • Název předpony použitý při pojmenování jiných objektů zdrojů
  • Název předplatného
  • Umístění datového centra

Skript se dokončí generováním příslušného příkazu CREATE CREDENTIAL, který použijete v 2 – Vytvoření přihlašovacích údajů SQL Serveru pomocí sdíleného přístupového podpisu. Toto prohlášení je zkopírováno do vaší schránky a je zobrazeno v konzoli, abyste jej mohli vidět.

Pokud chcete vytvořit zásadu v kontejneru a vygenerovat sdílený přístupový podpis (SAS), postupujte takto:

  1. Otevřete Prostředí Windows PowerShell nebo prostředí Windows PowerShell ISE (viz výše požadavky na verzi).

  2. Upravte a spusťte následující skript:

    # 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.Substring(1)
    $tSql | clip
    Write-Host $tSql
    
    # Once you're done with the tutorial, remove the resource group to clean up the resources.
    # Remove-AzResourceGroup -Name $resourceGroupName
    
  3. Po dokončení skriptu bude příkaz CREATE CREDENTIAL ve schránce pro použití v další části.

2. Vytvoření přihlašovacích údajů SQL Serveru pomocí sdíleného přístupového podpisu

V této části vytvoříte přihlašovací údaje pro uložení informací o zabezpečení, které BUDE SQL Server používat k zápisu do kontejneru Azure Blob Storage a čtení z kontejneru Azure Blob Storage, který jste vytvořili v předchozím kroku.

Přihlašovací údaje SQL Serveru jsou objekt, který slouží k ukládání ověřovacích informací potřebných k připojení k prostředku mimo SQL Server. Přihlašovací údaje ukládají cestu URI kontejneru Azure Blob Storage a sdíleného přístupového podpisu pro tento kontejner.

Pokud chcete vytvořit přihlašovací údaje SQL Serveru, postupujte takto:

  1. Spusťte SSMS.

  2. Otevřete nové okno dotazu a připojte se k instanci SQL Serveru databázového stroje v místním prostředí.

  3. V novém okně dotazu vložte příkaz CREATE CREDENTIAL se sdíleným přístupovým podpisem z oddílu 1 a spusťte tento skript.

    Skript bude vypadat jako následující kód.

    /* 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://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>]
      -- 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. Pokud chcete zobrazit všechny dostupné přihlašovací údaje, můžete spustit následující příkaz v okně dotazu připojeném k vaší instanci:

    SELECT * from sys.credentials
    
  5. Otevřete nové okno dotazu a připojte se k instanci SQL Serveru databázového stroje ve virtuálním počítači Azure.

  6. V novém okně dotazu vložte příkaz CREATE CREDENTIAL se sdíleným přístupovým podpisem z oddílu 1 a spusťte tento skript.

  7. Opakujte kroky 5 a 6 pro všechny další instance SQL Serveru, ke kterým chcete mít přístup ke kontejneru.

3. Zálohování databáze na URL

V této části zálohujete databázi AdventureWorks2022 ve vaší instanci SQL Serveru do kontejneru, který jste vytvořili v oddílu 1.

Poznámka

Pokud chcete zálohovat databázi SQL Serveru 2012 (11.x) SP1 CU2+ nebo databázi SQL Serveru 2014 (12.x) do tohoto kontejneru, můžete použít zastaralou syntaxi zdokumentovanou zde k zálohování na adresu URL pomocí syntaxe WITH CREDENTIAL.

Pokud chcete zálohovat databázi do úložiště objektů blob, postupujte takto:

  1. Spusťte SSMS.

  2. Otevřete nové okno dotazu a připojte se k instanci SQL Serveru na virtuálním počítači Azure.

  3. Zkopírujte a vložte následující Transact-SQL skript do okna dotazu. Odpovídajícím způsobem upravte adresu URL pro název vašeho účtu úložiště a kontejner, který jste zadali v části 1, a pak spusťte tento skript.

    -- 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://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_onprem.bak'
    
  4. Otevřete Průzkumníka objektů a připojte se k úložišti Azure pomocí účtu úložiště a klíče účtu.

    1. Rozbalte Kontejnery, rozbalte kontejner, který jste vytvořili v oddílu 1, a ověřte, že se v tomto kontejneru zobrazí záloha z kroku 3 výše.

    snímky obrazovky označující proces více kroků pro připojení k účtu Azure Storage.

4. Obnovení databáze na virtuální počítač z adresy URL

V této části obnovíte databázi AdventureWorks2022 do instance SQL Serveru na virtuálním počítači Azure.

Poznámka

Pro účely jednoduchosti v tomto kurzu používáme stejný kontejner pro data a soubory protokolů, které jsme použili pro zálohování databáze. V produkčním prostředí byste pravděpodobně používali více kontejnerů a často i více datových souborů. ** Můžete také zvážit rozložení zálohy mezi několik objektů blob, abyste zvýšili výkon zálohování u velké databáze.

Pokud chcete obnovit databázi AdventureWorks2022 z Azure Blob Storage do instance SQL Serveru na virtuálním počítači Azure, postupujte takto:

  1. Spusťte SSMS.

  2. Otevřete nové okno dotazu a připojte se k instanci SQL Serveru databázového stroje ve virtuálním počítači Azure.

  3. Zkopírujte a vložte následující Transact-SQL skript do okna dotazu. Odpovídajícím způsobem upravte adresu URL pro název vašeho účtu úložiště a kontejner, který jste zadali v části 1, a pak spusťte tento skript.

    -- Restore AdventureWorks2022 from URL to SQL Server instance using Azure Blob Storage for database files
    RESTORE DATABASE AdventureWorks2022
       FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_onprem.bak'
       WITH
          MOVE 'AdventureWorks2022_data' to 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_Data.mdf'
         ,MOVE 'AdventureWorks2022_log' to 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_Log.ldf'
    --, REPLACE
    
  4. Otevřete Průzkumníka objektů a připojte se k instanci Azure SQL Serveru.

  5. V Průzkumníku objektů rozbalte uzel databáze a ověřte, že byla obnovena AdventureWorks2022 databáze (podle potřeby aktualizujte uzel).

    1. Klepněte pravým tlačítkem myši AdventureWorks2022a vyberte Vlastnosti.
    2. Vyberte Soubory a ověřte, že cesty obou databázových souborů odkazují na objekty blob v kontejneru služby Azure Blob Storage (po dokončení vyberte Zrušit).

    snímky obrazovek z aplikace SSMS z [! INCLUDE [sssampledbobject-md](.. Databáze /includes/sssampledbobject-md.md)] na virtuálním počítači Azure.

  6. V Průzkumníku objektů se připojte ke službě Azure Storage.

    1. Rozbalte Containers, rozbalte kontejner, který jste vytvořili v oddílu 1, a ověřte, že se v tomto kontejneru zobrazí AdventureWorks2022_Data.mdf a AdventureWorks2022_Log.ldf z kroku 3 společně se záložním souborem z oddílu 3 (podle potřeby aktualizujte uzel).

    snímek obrazovky z Průzkumníka objektů v SSMS zobrazující datové soubory v kontejneru v Azure pod položkou instance SQL Serveru.

5. Zálohování databáze pomocí zálohování snímků souborů

V této části zálohujete databázi AdventureWorks2022 ve virtuálním počítači Azure pomocí zálohování snímků souborů, abyste provedli téměř okamžité zálohování prostřednictvím snímků Azure. Další informace o zálohování snímků souborů najdete v tématu File-Snapshot Zálohování databázových souborů v Azure

Pokud chcete zálohovat AdventureWorks2022 databázi pomocí zálohování snímků souborů, postupujte takto:

  1. Spusťte SSMS.

  2. Otevřete nové okno dotazu a připojte se k instanci SQL Serveru databázového stroje ve virtuálním počítači Azure.

  3. Zkopírujte, vložte a spusťte následující Transact-SQL skript do okna dotazu (nezavírejte toto okno dotazu – tento skript znovu spustíte v kroku 5. Tato systémová uložená procedura umožňuje zobrazit existující zálohy snímků souborů pro každý soubor, který obsahuje zadanou databázi. Všimněte si, že pro tuto databázi nejsou žádné zálohy snímků souborů.

    -- Verify that no file snapshot backups exist
    SELECT * FROM sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
    
  4. Zkopírujte a vložte následující Transact-SQL skript do okna dotazu. Odpovídajícím způsobem upravte adresu URL pro název vašeho účtu úložiště a kontejner, který jste zadali v části 1, a pak spusťte tento skript. Všimněte si, jak rychle k tomuto zálohování dochází.

    -- Backup the AdventureWorks2022 database with FILE_SNAPSHOT
    BACKUP DATABASE AdventureWorks2022
       TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_Azure.bak'
       WITH FILE_SNAPSHOT;
    
  5. Po ověření úspěšného spuštění skriptu v kroku 4 spusťte následující skript znovu. Všimněte si, že operace zálohování snímků souborů v kroku 4 vygenerovala snímky souborů dat i souboru protokolu.

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

    snímek obrazovky SSMS s výsledky fn_db_backup_file_snapshots zobrazující snímky.

  6. V Průzkumníku objektů v instanci SQL Serveru na virtuálním počítači Azure rozbalte uzel Databáze a ověřte, že se databáze AdventureWorks2022 obnovila do této instance (podle potřeby aktualizujte uzel).

  7. V Průzkumníku objektů se připojte ke službě Azure Storage.

  8. Rozbalte Kontejnery, rozbalte kontejner, který jste vytvořili v oddílu 1, a ověřte, že AdventureWorks2022_Azure.bak z kroku 4 výše se v tomto kontejneru zobrazí spolu se záložním souborem z oddílu 3 a soubory databáze z oddílu 4 (podle potřeby aktualizujte uzel).

    snímek obrazovky z Průzkumníka objektů v SSMS zobrazující zálohování snímků v Azure.

6. Generovat protokoly aktivit a zálohování pomocí zálohování snímků souborů

V této části vygenerujete aktivitu v databázi AdventureWorks2022 a pravidelně vytváříte zálohy transakčních protokolů pomocí záloh snímků souborů. Další informace o použití zálohování snímků souborů najdete v tématu File-Snapshot Zálohování databázových souborů v Azure.

Chcete-li generovat aktivitu v databázi AdventureWorks2022 a pravidelně vytvářet zálohy transakčních protokolů pomocí záloh snímků souborů, postupujte takto:

  1. Spusťte SSMS.

  2. Otevřete dvě nová okna dotazů a připojte je k instanci SQL Serveru databázového stroje ve virtuálním počítači Azure.

  3. Zkopírujte, vložte a spusťte následující Transact-SQL skript do jednoho z oken dotazu. Všimněte si, že tabulka Production.Location má před přidáním nových řádků v kroku 4 14 řádků.

    -- Verify row count at start
    SELECT COUNT (*) from AdventureWorks2022.Production.Location;
    
  4. Zkopírujte a vložte následující dva Transact-SQL skripty do dvou samostatných oken dotazu. Odpovídajícím způsobem upravte adresu URL pro název vašeho účtu úložiště a kontejner, který jste zadali v oddílu 1, a pak tyto skripty spusťte současně v samostatných oknech dotazů. Dokončení těchto skriptů bude trvat asi sedm minut.

    -- Insert 30,000 new rows into the Production.Location table in the AdventureWorks2022 database in batches of 75
    DECLARE @count INT=1, @inner INT;
    WHILE @count < 400
       BEGIN
          BEGIN TRAN;
             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;
       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://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/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. Prohlédněte si výstup prvního skriptu a všimněte si, že konečný počet řádků je teď 29 939.

    snímek obrazovky SSMS zobrazující sadu výsledků s počtem řádků 29 939.

  6. Prohlédněte si výstup druhého skriptu a všimněte si, že při každém spuštění příkazu BACKUP LOG se vytvoří dva nové snímky souborů, jeden snímek souboru protokolu a jeden snímek datového souboru – celkem dva snímky souborů pro každý soubor databáze. Po dokončení druhého skriptu si všimněte, že teď je celkem 16 snímků souborů, 8 pro každý soubor databáze – jeden z příkazu BACKUP DATABASE a jeden pro každé spuštění příkazu BACKUP LOG.

    snímek obrazovky ze služby SSMS zobrazující sadu výsledků historie snímků zálohování.

  7. V Průzkumníku objektů se připojte ke službě Azure Storage.

  8. Rozbalte Kontejnery, rozbalte kontejner, který jste vytvořili v oddílu 1, a ověřte, že se zobrazí sedm nových záložních souborů spolu s datovými soubory z předchozích částí (podle potřeby aktualizujte uzel).

    snímek obrazovky z Průzkumníka objektů v SSMS s několika snímky v kontejneru Azure.

7. Obnovení databáze k určitému bodu v čase

V této části obnovíte databázi AdventureWorks2022 k určitému bodu v čase mezi dvěma zálohami transakčních protokolů.

V případě tradičních záloh byste k obnovení k určitému bodu v čase museli použít úplnou zálohu databáze, třeba rozdílové zálohování a všechny soubory transakčních protokolů až do bodu v čase, do kterého chcete provést obnovení. Při zálohování snímků souborů potřebujete jenom dva sousední záložní soubory protokolu, které poskytují cílové příspěvky rámující čas, na který chcete provést obnovení. Potřebujete jenom dvě sady zálohování snímků souboru protokolu, protože každá záloha protokolu vytvoří snímek souboru každého souboru databáze (každý datový soubor a soubor protokolu).

Pokud chcete obnovit databázi k určitému bodu v čase ze sad zálohování snímků souborů, postupujte takto:

  1. Spusťte SSMS.

  2. Otevřete nové okno dotazu a připojte se k instanci SQL Serveru databázového stroje ve virtuálním počítači Azure.

  3. Zkopírujte, vložte a spusťte následující Transact-SQL skript do okna dotazu. Před obnovením tabulky Production.Location do bodu v čase, kdy obsahuje méně řádků, než je tomu nyní, v kroku 4 ověřte, že tabulka obsahuje 29 939 řádků.

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

    snímek obrazovky s výsledky SSMS zobrazující počet řádků 29 939

  4. Zkopírujte a vložte následující Transact-SQL skript do okna dotazu. Vyberte dva sousední záložní soubory protokolu a převeďte název souboru na datum a čas, který budete pro tento skript potřebovat. Odpovídajícím způsobem upravte adresu URL pro název vašeho účtu úložiště a kontejner, který jste zadali v části 1, zadejte názvy prvního a druhého záložního souboru, zadejte čas STOPAT ve formátu "26. června 2018 01:48 PM" a pak spusťte tento skript. Dokončení tohoto skriptu bude trvat několik minut.

    -- 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://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<firstbackupfile>.bak'
       WITH NORECOVERY,REPLACE;
    RESTORE LOG AdventureWorks2022
       FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<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. Zkontrolujte výstup. Všimněte si, že po obnovení je počet řádků 18 389, což je číslo počtu řádků mezi zálohováním protokolu 5 a 6 (počet řádků se bude lišit).

    18-thousand-rows.JPG.

8. Obnovení jako nové databáze ze zálohy protokolů

V této části obnovíte databázi AdventureWorks2022 jako novou databázi ze zálohy protokolu transakcí na základě snímku souboru.

V tomto scénáři provádíte obnovení instance SQL Serveru na jiném virtuálním počítači pro účely obchodní analýzy a vytváření sestav. Obnovení do jiné instance na jiném virtuálním počítači přesměruje úlohy do vyhrazeného a určeného virtuálního počítače pro tento účel, čímž se odeberou požadavky na prostředky z transakčního systému.

Obnovení ze zálohy transakčního protokolu pomocí zálohování snímků souborů je velmi rychlé, podstatně rychlejší než u tradičních streamovacích záloh. U tradičních záloh streamování byste museli použít úplné zálohování databáze, třeba rozdílové zálohování a některé nebo všechny zálohy transakčních protokolů (nebo nové úplné zálohování databáze). Při zálohování protokolů pomocí snímku souborů však potřebujete pouze nejnovější zálohu protokolu (nebo jakoukoli jinou zálohu protokolu, nebo jakékoli dvě sousední zálohy protokolu pro obnovení k určitému bodu v čase mezi dvěma okamžiky zálohování protokolu). Abyste měli jistotu, potřebujete jen jednu sadu zálohování snímků protokolového souboru, protože každá záloha snímků protokolových souborů vytvoří snímek pro každý soubor databáze (každý datový soubor a každý soubor protokolu).

Pokud chcete obnovit databázi do nové databáze ze zálohy transakčního protokolu pomocí zálohování snímků souborů, postupujte takto:

  1. Spusťte SSMS.

  2. Otevřete nové okno dotazu a připojte se k instanci SQL Serveru databázového stroje na virtuálním počítači Azure.

    Poznámka

    Pokud se jedná o jiný virtuální počítač Azure, než jste používali v předchozích částech, ujistěte se, že jste postupovali podle kroků v 2 – Vytvoření přihlašovacích údajů SQL Serveru pomocí sdíleného přístupového podpisu. Pokud chcete provést obnovení do jiného kontejneru, postupujte podle kroků v 1 – Vytvořte uložené zásady přístupu a úložiště sdíleného přístupu pro nový kontejner.

  3. Zkopírujte a vložte následující Transact-SQL skript do okna dotazu. Vyberte soubor zálohy logu, který chcete použít. Odpovídajícím způsobem upravte adresu URL pro název vašeho účtu úložiště a kontejner, který jste zadali v oddílu 1, zadejte název záložního souboru protokolu a spusťte tento skript.

    -- restore as a new database from a transaction log backup file
    RESTORE DATABASE AdventureWorks2022_EOM
        FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<logbackupfile.bak>'
        WITH MOVE 'AdventureWorks2022_data' to 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_EOM_Data.mdf'
       , MOVE 'AdventureWorks2022_log' to 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_EOM_Log.ldf'
       , RECOVERY
    --, REPLACE
    
  4. Zkontrolujte výstup a ověřte, že obnovení proběhlo úspěšně.

  5. V Průzkumníku objektů se připojte ke službě Azure Storage.

  6. Rozbalte Kontejner, rozbalte kontejner, který jste vytvořili v oddílu 1 (v případě potřeby aktualizujte) a ověřte, že se v kontejneru objeví nové soubory dat a protokolů spolu s bloby z předchozích částí.

    Snímek obrazovky prohlížeče úložiště v aplikaci SQL Server Management Studio pro kontejnery Azure, zobrazující datové a logové soubory nové databáze

9. Správa sad záloh a záloh snímků souborů

V této části odstraníte zálohovací sadu pomocí systémové uložené procedury sp_delete_backup (Transact-SQL). Tato systémová uložená procedura odstraní záložní soubor a snímek souboru u každého souboru databáze přidruženého k této zálohovací sadě.

Poznámka

Pokud se pokusíte odstranit zálohovací sadu jednoduše odstraněním záložního souboru z kontejneru Azure Blob Storage, odstraníte pouze samotný záložní soubor – přidružené snímky souborů zůstanou. Pokud se ocitnete v této situaci, použijte systémovou funkci sys.fn_db_backup_file_snapshots (Transact-SQL) k identifikaci adresy URL osamocených snímků souborů a prostřednictvím systémové uložené procedury sp_delete_backup_file_snapshot (Transact-SQL) odstraňte každý osamocený snímek souboru. Další informace najdete v tématu File-Snapshot Zálohování databázových souborů v Azure.

Pokud chcete odstranit zálohovací sadu snímků souborů, postupujte takto:

  1. Spusťte SSMS.

  2. Otevřete nové okno dotazu a připojte se k instanci SQL Serveru databázového stroje ve virtuálním počítači Azure (nebo k jakékoli instanci SQL Serveru s oprávněními ke čtení a zápisu v tomto kontejneru).

  3. Zkopírujte a vložte následující Transact-SQL skript do okna dotazu. Vyberte zálohu protokolu, kterou chcete odstranit, spolu s přidruženými snímky souborů. Odpovídajícím způsobem upravte adresu URL pro název vašeho účtu úložiště a kontejner, který jste zadali v oddílu 1, zadejte název záložního souboru protokolu a spusťte tento skript.

    sys.sp_delete_backup 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/tutorial-21764-20181003205236.bak';
    
  4. V Průzkumníku objektů se připojte ke službě Azure Storage.

  5. Rozbalte Kontejnery, rozbalte kontejner, který jste vytvořili v oddílu 1, a ověřte, že se záložní soubor, který jste použili v kroku 3, již v tomto kontejneru nezobrazuje (podle potřeby aktualizujte uzel).

    Dva snímky obrazovky prohlížeče úložiště SQL Server Management Studio zobrazují kontejnery Azure a odstranění blobu zálohy transakčního protokolu.

  6. Zkopírujte, vložte a spusťte následující Transact-SQL skript do okna dotazu, abyste ověřili, že byly odstraněny dva snímky souborů.

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

    snímek obrazovky zobrazující podokno výsledků SSMS se dvěma odstraněnými snímky souborů

10. Odebrání prostředků

Jakmile budete s tímto kurzem hotovi a chcete ušetřit prostředky, nezapomeňte odstranit skupinu prostředků vytvořenou v tomto kurzu.

Pokud chcete odstranit skupinu prostředků, spusťte následující kód PowerShellu:

# 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

Další kroky