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.
- Získejte bezplatný účet Azure.
- Vytvořte účet Azure pro úložiště .
- Nainstalujte SQL Server 2017 Developer Edition.
- Zřízení virtuálního počítače Azure s SQL Serverem
- Nainstalujte SQL Server Management Studio.
- Stáhněte si ukázkové databáze AdventureWorks.
- Přiřaďte uživatelský účet k roli db_backupoperator a udělte oprávnění k úpravě libovolného přihlašovacího ú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:
Otevřete Prostředí Windows PowerShell nebo prostředí Windows PowerShell ISE (viz výše požadavky na verzi).
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
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:
Spusťte SSMS.
Otevřete nové okno dotazu a připojte se k instanci SQL Serveru databázového stroje v místním prostředí.
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
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
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.
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.
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:
Spusťte SSMS.
Otevřete nové okno dotazu a připojte se k instanci SQL Serveru na virtuálním počítači Azure.
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'
Otevřete Průzkumníka objektů a připojte se k úložišti Azure pomocí účtu úložiště a klíče účtu.
- 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.
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:
Spusťte SSMS.
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.
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
Otevřete Průzkumníka objektů a připojte se k instanci Azure SQL Serveru.
V Průzkumníku objektů rozbalte uzel databáze a ověřte, že byla obnovena
AdventureWorks2022
databáze (podle potřeby aktualizujte uzel).- Klepněte pravým tlačítkem myši AdventureWorks2022a vyberte Vlastnosti.
- 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).
V Průzkumníku objektů se připojte ke službě Azure Storage.
- Rozbalte Containers, rozbalte kontejner, který jste vytvořili v oddílu 1, a ověřte, že se v tomto kontejneru zobrazí
AdventureWorks2022_Data.mdf
aAdventureWorks2022_Log.ldf
z kroku 3 společně se záložním souborem z oddílu 3 (podle potřeby aktualizujte uzel).
- Rozbalte Containers, rozbalte kontejner, který jste vytvořili v oddílu 1, a ověřte, že se v tomto kontejneru zobrazí
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:
Spusťte SSMS.
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.
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');
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;
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');
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).V Průzkumníku objektů se připojte ke službě Azure Storage.
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).
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:
Spusťte SSMS.
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.
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;
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;
Prohlédněte si výstup prvního skriptu a všimněte si, že konečný počet řádků je teď 29 939.
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.
V Průzkumníku objektů se připojte ke službě Azure Storage.
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).
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:
Spusťte SSMS.
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.
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
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 ;
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).
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:
Spusťte SSMS.
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.
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
Zkontrolujte výstup a ověřte, že obnovení proběhlo úspěšně.
V Průzkumníku objektů se připojte ke službě Azure Storage.
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í.
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:
Spusťte SSMS.
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).
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';
V Průzkumníku objektů se připojte ke službě Azure Storage.
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).
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');
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
- Datové soubory SQL Serveru v Microsoft Azure
- zálohování File-Snapshot pro databázové soubory v Azure
- zálohování SQL Serveru na adresu URL
- Sdílené přístupové podpisy, část 1: Porozumění modelu SAS
- Vytvořit kontejner
- Nastavit přístupová práva kontejneru ACL
- Získejte seznam ACL kontejneru
- Pověření (databázový stroj)
- VYTVOŘIT PŘIHLAŠOVACÍ ÚDAJE (Transact-SQL)
- sys.credentials (Transact-SQL)
- sp_delete_backup (Transact-SQL)
- sys.fn_db_backup_file_snapshots (Transact-SQL)
- sp_delete_backup_file_snapshot (Transact-SQL)
- zálohování File-Snapshot pro databázové soubory v Azure