Självstudie: Använda Azure Blob Storage med SQL Server
gäller för: SQL Server 2016 (13.x) och senare versioner
Den här självstudien hjälper dig att förstå hur du använder Azure Blob Storage för datafiler och säkerhetskopior i SQL Server 2016 och senare versioner.
SQL Server-integreringsstöd för Azure Blob Storage började som en SQL Server 2012 Service Pack 1 CU2-förbättring och förbättrades ytterligare med SQL Server 2014 och SQL Server 2016. En översikt över funktionerna och fördelarna med att använda den här funktionen finns i SQL Server Data Files i Microsoft Azure.
Den här handledningen visar hur du arbetar med SQL Server Data Files i Azure Blob Storage som omfattar flera avsnitt. Varje avsnitt fokuserar på en specifik uppgift och avsnitten ska slutföras i följd. Först får du lära dig hur du skapar en ny container i Blob Storage med en lagrad åtkomstprincip och en signatur för delad åtkomst. Sedan får du lära dig hur du skapar en SQL Server-autentiseringsuppgift för att integrera SQL Server med Azure Blob Storage. Därefter säkerhetskopierar du en databas till Blob Storage och återställer den till en virtuell Azure-dator. Sedan använder du ögonblicksbildssäkerhetskopiering av transaktionslogg för SQL Server för att återställa till en viss tidpunkt och till en ny databas. Slutligen visar handledningen användningen av systemlagrade procedurer och funktioner för metadata som hjälper dig att förstå och arbeta med ögonblicksbilder av säkerhetskopior.
Förutsättningar
För att slutföra den här självstudien måste du känna till begreppen säkerhetskopiering och återställning av SQL Server och T-SQL-syntax.
Om du vill använda den här självstudien behöver du ett Azure Storage-konto, SQL Server Management Studio (SSMS), åtkomst till en instans av SQL Server lokalt, åtkomst till en virtuell Azure-dator (VM) som kör en instans av SQL Server 2016 eller senare samt en AdventureWorks2022
databas. Dessutom bör kontot som används för att utfärda kommandona BACKUP och RESTORE finnas i db_backupoperator databasrollen med ändra eventuella behörigheter för autentiseringsuppgifter.
- Skaffa ett kostnadsfritt Azure-konto.
- Skapa ett Azure Storage-konto.
- Installera SQL Server 2017 Developer Edition.
- Etablera en virtuell Azure-dator som kör SQL Server-
- Installera SQL Server Management Studio.
- Ladda ned AdventureWorks-exempeldatabaser.
- Tilldela användarkontot till rollen db_backupoperator och bevilja ändra eventuella autentiseringsuppgifter behörigheter.
Viktig
SQL Server stöder inte Azure Data Lake Storage, se till att hierarkisk namnrymd inte är aktiverad på lagringskontot som används för den här handledningen.
1 – Skapa lagrad åtkomstprincip och lagring med delad åtkomst
I det här avsnittet använder du ett Azure PowerShell- skript för att skapa en signatur för delad åtkomst i en Azure Blob Storage-container med hjälp av en lagrad åtkomstprincip.
Observera
Det här skriptet skrivs med Azure PowerShell 5.0.10586.
En signatur för delad åtkomst är en URI som ger begränsad åtkomstbehörighet till containrar, blobar, köer eller tabeller. En lagrad åtkomstprincip ger ytterligare en nivå av kontroll över signaturer för delad åtkomst på serversidan, inklusive återkallande, upphörande eller utökad åtkomst. När du använder den här nya förbättringen måste du skapa en princip för en container med minst läs-, skriv- och listrättigheter.
Du kan skapa en lagrad åtkomstprincip och en signatur för delad åtkomst med hjälp av Azure PowerShell, Azure Storage SDK, Azure REST API eller ett verktyg från tredje part. Den här självstudien visar hur du använder ett Azure PowerShell-skript för att slutföra uppgiften. Skriptet använder Resource Manager-distributionsmodellen och skapar följande nya resurser
- Resursgrupp
- Lagringskonto
- Azure Blob Storage-container
- SAS-policy
Det här skriptet börjar med att deklarera ett antal variabler för att ange namnen på ovanstående resurser och namnen på följande obligatoriska indatavärden:
- Ett prefixnamn som används för att namnge andra resursobjekt
- Prenumerationsnamn
- Datacenterplats
Skriptet slutförs genom att generera lämplig CREATE CREDENTIAL-instruktion som du ska använda i 2 – Skapa en SQL Server-autentiseringsuppgift med hjälp av en signatur för delad åtkomst. Detta uttalande kopieras till urklippet för dig och skrivs ut i konsolen så att du kan se det.
Följ dessa steg för att skapa en princip för containern och generera en signatur för delad åtkomst (SAS):
Öppna Windows PowerShell eller Windows PowerShell ISE (se versionskrav ovan).
Redigera och kör sedan skriptet nedan:
# 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
När skriptet är klart finns kommandot CREATE CREDENTIAL i Urklipp för användning i nästa avsnitt.
2 – Skapa en SQL Server-autentiseringsuppgift med en signatur för delad åtkomst
I det här avsnittet skapar du en autentiseringsuppgift för att lagra säkerhetsinformationen som ska användas av SQL Server för att skriva till och läsa från Azure Blob Storage-containern som du skapade i föregående steg.
En SQL Server-autentiseringsuppgift är ett objekt som används för att lagra autentiseringsinformation som krävs för att ansluta till en resurs utanför SQL Server. Autentiseringsuppgifterna lagrar URI-sökvägen för Azure Blob Storage-containern och signaturen för delad åtkomst för den här containern.
Följ dessa steg för att skapa en SQL Server-autentiseringsuppgift:
Starta SSMS.
Öppna ett nytt frågefönster och anslut till SQL Server-instansen av databasmotorn i din lokala miljö.
I det nya frågefönstret klistrar du in instruktionen CREATE CREDENTIAL med signaturen för delad åtkomst från avsnitt 1 och kör skriptet.
Skriptet ser ut som följande kod.
/* 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
Om du vill se alla tillgängliga autentiseringsuppgifter kan du köra följande instruktion i ett frågefönster som är anslutet till din instans:
SELECT * from sys.credentials
Öppna ett nytt frågefönster och anslut till SQL Server-instansen av databasmotorn på den virtuella Azure-datorn.
I det nya frågefönstret klistrar du in instruktionen CREATE CREDENTIAL med signaturen för delad åtkomst från avsnitt 1 och kör skriptet.
Upprepa steg 5 och 6 för eventuella ytterligare SQL Server-instanser som du vill ha åtkomst till containern.
3 – Säkerhetskopiering av databas till URL
I det här avsnittet säkerhetskopierar du AdventureWorks2022
-databasen i SQL Server-instansen till containern som du skapade i avsnitt 1.
Not
Om du vill säkerhetskopiera en SQL Server 2012-databas (11.x) SP1 CU2+ eller en SQL Server 2014-databas (12.x) till den här containern kan du använda den inaktuella syntax som dokumenterats här för att säkerhetskopiera till en URL med syntaxen WITH CREDENTIAL
.
Följ dessa steg för att säkerhetskopiera en databas till bloblagring:
Starta SSMS.
Öppna ett nytt frågefönster och anslut till SQL Server-instansen på din virtuella Azure-dator.
Kopiera och klistra in följande Transact-SQL skript i frågefönstret. Ändra URL:en på rätt sätt för lagringskontots namn och containern som du angav i avsnitt 1 och kör sedan det här skriptet.
-- 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'
Öppna Object Explorer och anslut till Azure Storage med ditt lagringskonto och din kontonyckel.
- Expandera Containrar, expandera containern som du skapade i avsnitt 1 och kontrollera att säkerhetskopian från steg 3 ovan visas i den här containern.
4 – Återställa databasen till en virtuell dator från URL:en
I det här avsnittet återställer du AdventureWorks2022
-databasen till SQL Server-instansen på den virtuella Azure-datorn.
Not
För enkelhetens skull i den här handledningen använder vi samma container för de data- och loggfiler som vi använde för databassäkerhetskopian. I en produktionsmiljö skulle du förmodligen använda flera containrar och ofta flera datafiler också. Du kan också överväga att ta bort säkerhetskopieringen över flera blobar för att öka säkerhetskopieringsprestandan när du säkerhetskopierar en stor databas.
Följ dessa steg för att återställa AdventureWorks2022
-databasen från Azure Blob Storage till SQL Server-instansen på den virtuella Azure-datorn:
Starta SSMS.
Öppna ett nytt frågefönster och anslut till SQL Server-instansen av databasmotorn på den virtuella Azure-datorn.
Kopiera och klistra in följande Transact-SQL skript i frågefönstret. Ändra URL:en på rätt sätt för lagringskontots namn och containern som du angav i avsnitt 1 och kör sedan det här skriptet.
-- 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
Öppna Object Explorer och anslut till din Azure SQL Server-instans.
I Object Explorer expanderar du noden Databases och kontrollerar att
AdventureWorks2022
-databasen har återställts (uppdatera noden efter behov)- Högerklicka på AdventureWorks2022och välj Egenskaper.
- Välj Filer och kontrollera att sökvägarna för de två databasfilerna är URL:er som pekar på blobar i Azure Blob Storage-containern (välj Avbryt när du är klar).
I Object Explorer ansluter du till Azure Storage.
- Expandera Containrar, expandera containern som du skapade i avsnitt 1 och kontrollera att
AdventureWorks2022_Data.mdf
ochAdventureWorks2022_Log.ldf
från steg 3 ovan visas i den här containern tillsammans med säkerhetskopieringsfilen från avsnitt 3 (uppdatera noden efter behov).
- Expandera Containrar, expandera containern som du skapade i avsnitt 1 och kontrollera att
5 – Säkerhetskopiera databas med hjälp av säkerhetskopiering av ögonblicksbilder
I det här avsnittet säkerhetskopierar du AdventureWorks2022
-databasen på din virtuella Azure-dator med ögonblicksbildsäkerhetskopiering för att utföra en nästan omedelbar säkerhetskopiering med Azure-snapshots. Mer information om säkerhetskopieringar av ögonblicksbilder finns i File-Snapshot Säkerhetskopior för databasfiler i Azure
Följ dessa steg för att säkerhetskopiera AdventureWorks2022
-databasen med hjälp av ögonblicksbildsäkerhetskopiering av filer:
Starta SSMS.
Öppna ett nytt frågefönster och anslut till SQL Server-instansen av databasmotorn på den virtuella Azure-datorn.
Kopiera, klistra in och kör följande Transact-SQL skript i frågefönstret (stäng inte det här frågefönstret – du kör skriptet igen i steg 5. Med den här system lagrade proceduren kan du visa befintliga säkerhetskopior av ögonblicksbilder för varje fil som består av en angiven databas. Du kommer att märka att det inte finns några säkerhetskopieringar av ögonblicksbilder för den här databasen.
-- Verify that no file snapshot backups exist SELECT * FROM sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
Kopiera och klistra in följande Transact-SQL skript i frågefönstret. Ändra URL:en på rätt sätt för lagringskontots namn och containern som du angav i avsnitt 1 och kör sedan det här skriptet. Observera hur snabbt säkerhetskopieringen sker.
-- 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;
När du har kontrollerat att skriptet i steg 4 har körts korrekt kör du följande skript igen. Observera att operationen för att säkerhetskopiera fil-snapshots i steg 4 genererade fil-snapshots av både data och loggfilen.
-- Verify that two file-snapshot backups exist SELECT * FROM sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
I Object Explorer expanderar du Databases-noden i sql Server-instansen på den virtuella Azure-datorn och kontrollerar att
AdventureWorks2022
-databasen har återställts till den här instansen (uppdatera noden efter behov).I Object Explorer ansluter du till Azure Storage.
Expandera Containrar, expandera containern som du skapade i avsnitt 1 och kontrollera att
AdventureWorks2022_Azure.bak
från steg 4 ovan visas i den här containern, tillsammans med säkerhetskopian från avsnitt 3 och databasfilerna från avsnitt 4 (uppdatera noden efter behov).
6 – Generera aktivitets- och säkerhetskopieringslogg med hjälp av säkerhetskopiering av filögonblicksbilder
I det här avsnittet genererar du aktivitet i AdventureWorks2022
-databasen och skapar regelbundet säkerhetskopior av transaktionsloggar med hjälp av säkerhetskopior av ögonblicksbilder. Mer information om hur du använder säkerhetskopieringar av ögonblicksbilder finns i File-Snapshot Säkerhetskopior för databasfiler i Azure.
Följ dessa steg för att generera aktivitet i AdventureWorks2022
-databasen och regelbundet skapa säkerhetskopior av transaktionsloggar med hjälp av säkerhetskopieringar av filögonblicksbilder:
Starta SSMS.
Öppna två nya frågefönster och anslut var och en till SQL Server-instansen av databasmotorn på den virtuella Azure-datorn.
Kopiera, klistra in och kör följande Transact-SQL skript i ett av frågefönstren. Observera att tabellen
Production.Location
har 14 rader innan vi lägger till nya rader i steg 4.-- Verify row count at start SELECT COUNT (*) from AdventureWorks2022.Production.Location;
Kopiera och klistra in följande två Transact-SQL skript i de två separata frågefönstren. Ändra URL:en på rätt sätt för lagringskontots namn och containern som du angav i avsnitt 1 och kör sedan skripten samtidigt i separata frågefönster. De här skripten tar ungefär sju minuter att slutföra.
-- 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;
Granska utdata från det första skriptet och observera att antalet sista rader nu är 29 939.
Granska utdata från det andra skriptet och observera att varje gång instruktionen SÄKERHETSKOPIERINGsLOGG körs så skapas två nya filögonblicksbilder, en ögonblicksbild av loggfilen och en ögonblicksbild av datafilen för totalt två ögonblicksbilder av filer för varje databasfil. När det andra skriptet har slutförts ser du att det nu finns totalt 16 ögonblicksbilder av filer, 8 för varje databasfil – en från instruktionen BACKUP DATABASE och en för varje körning av BACKUP LOG-instruktionen.
I Object Explorer ansluter du till Azure Storage.
Expandera Containrar, expandera containern som du skapade i avsnitt 1 och kontrollera att sju nya säkerhetskopieringsfiler visas tillsammans med datafilerna från föregående avsnitt (uppdatera noden efter behov).
7 – Återställa en databas till en tidpunkt
I det här avsnittet återställer du AdventureWorks2022
-databasen till en tidpunkt mellan två av säkerhetskopiorna i transaktionsloggen.
Med traditionella säkerhetskopior, för att åstadkomma återställning till tidpunkt, skulle du behöva använda den fullständiga databassäkerhetskopian, kanske en differentiell säkerhetskopia, och alla transaktionsloggfiler fram till och precis förbi den tidpunkt som du vill återställa till. Med ögonblicksbildkopior av filer behöver du bara de två intilliggande loggsäkerhetskopiorna som anger tidsgränserna för den tidpunkt du vill återställa till. Du behöver bara två säkerhetskopieringsuppsättningar för ögonblicksbilder av loggfiler eftersom varje loggsäkerhetskopia skapar en ögonblicksbild av varje databasfil (varje datafil och loggfilen).
Följ dessa steg för att återställa en databas till en angiven tidpunkt från säkerhetskopieringsuppsättningar för ögonblicksbilder av filer:
Starta SSMS.
Öppna ett nytt frågefönster och anslut till SQL Server-instansen av databasmotorn på den virtuella Azure-datorn.
Kopiera, klistra in och kör följande Transact-SQL skript i frågefönstret. Kontrollera att tabellen
Production.Location
har 29 939 rader innan vi återställer den till en tidpunkt då det finns färre rader i steg 4.-- Verify row count at start SELECT COUNT (*) from AdventureWorks2022.Production.Location
Kopiera och klistra in följande Transact-SQL skript i frågefönstret. Välj två intilliggande loggsäkerhetskopieringsfiler och konvertera filnamnet till det datum och den tid du behöver för det här skriptet. Ändra URL:en på rätt sätt för lagringskontots namn och containern som du angav i avsnitt 1, ange namn på den första och andra säkerhetskopian, ange STOPAT-tiden i formatet "26 juni 2018 01:48" och kör sedan skriptet. Det tar några minuter att slutföra det här skriptet
-- 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 ;
Granska utdata. Observera att radantalet efter återställningen är 18 389, vilket är ett antal rader mellan loggsäkerhetskopiering 5 och 6 (antalet rader varierar).
8 – Återställ som ny databas från loggbackup
I det här avsnittet kommer du att återställa databasen AdventureWorks2022
som en ny databas från en filögonblickssäkerhetskopia av transaktionsloggen.
I det här scenariot utför du en återställning till en SQL Server-instans på en annan virtuell dator för affärsanalys och rapportering. Genom att återställa till en annan instans på en annan virtuell dator avlastas arbetsbelastningen till en virtuell dator som är dedikerad och rätt dimensionerad för detta ändamål, vilket minskar resurskraven från transaktionssystemet.
Återställning från en säkerhetskopiering av transaktionsloggen med säkerhetskopiering av ögonblicksbilder är mycket snabb, betydligt snabbare än med traditionella säkerhetskopieringar av direktuppspelning. Med traditionella säkerhetskopieringar av direktuppspelning skulle du behöva använda den fullständiga databassäkerhetskopian, kanske en differentiell säkerhetskopia, och några eller alla säkerhetskopior av transaktionsloggen (eller en ny fullständig databassäkerhetskopia). Men med filögonblicksbild-loggsäkerhetskopior behöver du endast den senaste loggsäkerhetskopian (eller någon annan loggsäkerhetskopia eller två intilliggande loggsäkerhetskopior för att återställa till en tidpunkt mellan två loggsäkerhetskopieringstillfällen). För att vara tydlig behöver du bara en säkerhetskopieringsuppsättning för loggfilsögonblicksbilder eftersom varje säkerhetskopia av filögonblicksloggen skapar en ögonblicksbild av varje databasfil (varje datafil och loggfilen).
Följ dessa steg för att återställa en databas till en ny databas från en säkerhetskopia av transaktionsloggen med hjälp av säkerhetskopiering av ögonblicksbilder av filer:
Starta SSMS.
Öppna ett nytt frågefönster och anslut till SQL Server-instansen av databasmotorn på en virtuell Azure-dator.
Notera
Om det här är en annan virtuell Azure-dator än du har använt i föregående avsnitt kontrollerar du att du har följt stegen i 2 – Skapa en SQL Server-autentiseringsuppgift med hjälp av en signatur för delad åtkomst. Om du vill återställa till en annan container följer du stegen i 1 – Skapa lagrad åtkomstprincip och lagring med delad åtkomst för den nya containern.
Kopiera och klistra in följande Transact-SQL skript i frågefönstret. Välj den loggsäkerhetskopieringsfil som du vill använda. Ändra URL:en på rätt sätt för lagringskontots namn och containern som du angav i avsnitt 1, ange namnet på loggsäkerhetskopian och kör sedan det här skriptet.
-- 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
Granska utdata för att kontrollera att återställningen lyckades.
I Object Explorer ansluter du till Azure Storage.
Expandera Containrar, expandera containern som du skapade i avsnitt 1 (uppdatera om det behövs) och kontrollera att de nya data- och loggfilerna visas i containern, tillsammans med blobarna från föregående avsnitt.
9 – Hantera säkerhetskopieringsuppsättningar och filsnapshots-säkerhetskopior
I det här avsnittet tar du bort en säkerhetskopieringsuppsättning med hjälp av den systemlagrade proceduren sp_delete_backup (Transact-SQL). Den här system lagrade proceduren tar bort säkerhetskopieringsfilen och ögonblicksbilden av filen på varje databasfil som är associerad med den här säkerhetskopieringsuppsättningen.
Not
Om du försöker ta bort en säkerhetskopieringsuppsättning genom att helt enkelt ta bort säkerhetskopieringsfilen från Azure Blob Storage-containern tar du bara bort själva säkerhetskopieringsfilen – de associerade ögonblicksbilderna av filen kommer att finnas kvar. Om du befinner dig i det här scenariot, använder du systemfunktionen sys.fn_db_backup_file_snapshots (Transact-SQL) för att identifiera URL:en för de övergivna filögonblicksbilderna och använder systemproceduren sp_delete_backup_file_snapshot (Transact-SQL) för att ta bort varje övergiven filögonblicksbild. Mer information finns i File-Snapshot Backups for Database Files i Azure.
Följ dessa steg om du vill ta bort en uppsättning säkerhetskopieringar av ögonblicksbilder:
Starta SSMS.
Öppna ett nytt frågefönster och anslut till SQL Server-instansen av databasmotorn på den virtuella Azure-datorn (eller till valfri SQL Server-instans med behörighet att läsa och skriva på den här containern).
Kopiera och klistra in följande Transact-SQL skript i frågefönstret. Välj den loggbackup som du vill ta bort och dess associerade ögonblicksbilder. Ändra URL:en på rätt sätt för lagringskontots namn och containern som du angav i avsnitt 1, ange namnet på loggsäkerhetskopian och kör sedan det här skriptet.
sys.sp_delete_backup 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/tutorial-21764-20181003205236.bak';
I Object Explorer ansluter du till Azure Storage.
Expandera Containrar, expandera containern som du skapade i avsnitt 1 och kontrollera att säkerhetskopieringsfilen som du använde i steg 3 inte längre visas i den här containern (uppdatera noden efter behov).
Kopiera, klistra in och kör följande Transact-SQL-skript i frågefönstret för att verifiera att två snapshotfiler har tagits bort.
-- verify that two file snapshots have been removed SELECT * from sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
10 – Ta bort resurser
När du är klar med den här självstudien, och för att spara resurser, se till att ta bort den resursgrupp som skapades i den här självstudien.
Om du vill ta bort resursgruppen kör du följande PowerShell-kod:
# 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
Nästa steg
- SQL Server-datafiler i Microsoft Azure
- File-Snapshot Säkerhetskopior för databasfiler i Azure
- SÄKERHETSKOPIERING av SQL Server till URL
- Signaturer för delad åtkomst, del 1: Förstå SAS-modellen
- Skapa Container
- Ange container-ACL
- Hämta ACL för container
- autentiseringsuppgifter (databasmotor)
- CREATE CREDENTIAL (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)
- File-Snapshot Säkerhetskopior för databasfiler i Azure