Zelfstudie: Azure Blob Storage gebruiken met SQL Server
Van toepassing op: SQL Server 2016 (13.x) en latere versies
In deze zelfstudie leert u hoe u Azure Blob Storage gebruikt voor gegevensbestanden en back-ups in SQL Server 2016 en latere versies.
Ondersteuning voor SQL Server-integratie voor Azure Blob Storage is begonnen als een verbeteringen in SQL Server 2012 Service Pack 1 CU2 en is verder verbeterd met SQL Server 2014 en SQL Server 2016. Zie SQL Server-gegevensbestanden in Microsoft Azurevoor een overzicht van de functionaliteit en voordelen van het gebruik van deze functie.
In deze zelfstudie leert u hoe u in meerdere secties met SQL Server-gegevensbestanden in Azure Blob Storage kunt werken. Elke sectie is gericht op een specifieke taak en de secties moeten op volgorde worden voltooid. Eerst leert u hoe u een nieuwe container maakt in Blob Storage met een opgeslagen toegangsbeleid en een handtekening voor gedeelde toegang. Vervolgens leert u hoe u een SQL Server-referentie maakt om SQL Server te integreren met Azure Blob Storage. Vervolgens maakt u een back-up van een database naar Blob Storage en herstelt u deze naar een virtuele Azure-machine. Vervolgens gebruikt u een SQL Server-bestandsmomentopname voor het maken van een back-up van het transactielogboek om terug te zetten naar een specifiek tijdstip en naar een nieuwe database. Ten slotte toont de zelfstudie het gebruik van opgeslagen procedures en functies van metagegevenssystemen om u te helpen inzicht te krijgen in en te werken met back-ups van momentopnamen van bestanden.
Voorwaarden
Als u deze zelfstudie wilt voltooien, moet u bekend zijn met sql Server-concepten voor back-up en herstel en T-SQL-syntaxis.
Als u deze zelfstudie wilt gebruiken, hebt u een Azure-opslagaccount, SQL Server Management Studio (SSMS), toegang tot een exemplaar van SQL Server on-premises, toegang tot een virtuele Azure-machine (VM) met een exemplaar van SQL Server 2016 of hoger en een AdventureWorks2022
-database nodig. Daarnaast moet het account dat wordt gebruikt om de opdrachten BACK-UP en RESTORE uit te voeren zich in de db_backupoperator databaserol bevinden, waarbij referenties machtigingen wijzigt.
- Krijg een gratis Azure-account.
- Maak een Azure-opslagaccount.
- Installeer SQL Server 2017 Developer Edition.
- Een Azure-VM inrichten waarop SQL Server- wordt uitgevoerd
- Installeer SQL Server Management Studio-.
- Download AdventureWorks-voorbeelddatabases.
- Wijs het gebruikersaccount toe aan de rol van db_backupoperator en verleen machtigingen om elk referentie te wijzigen.
Belangrijk
SQL Server biedt geen ondersteuning voor Azure Data Lake Storage-. Controleer of hiërarchische naamruimte niet is ingeschakeld voor het opslagaccount dat voor deze zelfstudie wordt gebruikt.
1 - Opgeslagen toegangsbeleid en opslag voor gedeelde toegang maken
In deze sectie gebruikt u een Azure PowerShell-script om een handtekening voor gedeelde toegang te maken in een Azure Blob Storage-container met behulp van een opgeslagen toegangsbeleid.
Notitie
Dit script wordt geschreven met behulp van Azure PowerShell 5.0.10586.
Een handtekening voor gedeelde toegang is een URI die beperkte toegangsrechten verleent aan containers, blobs, wachtrijen of tabellen. Een opgeslagen toegangsbeleid biedt een extra controleniveau over handtekeningen voor gedeelde toegang aan de serverzijde, waaronder intrekken, verlopen of uitbreiden van toegang. Wanneer u deze nieuwe uitbreiding gebruikt, moet u een beleid maken voor een container met ten minste lees-, schrijf- en lijstrechten.
U kunt een opgeslagen toegangsbeleid en een handtekening voor gedeelde toegang maken met behulp van Azure PowerShell, de Azure Storage SDK, de Azure REST API of een hulpprogramma van derden. In deze zelfstudie ziet u hoe u een Azure PowerShell-script gebruikt om deze taak te voltooien. Het script maakt gebruik van het Resource Manager-implementatiemodel en maakt de volgende nieuwe resources
- Resourcegroep
- Opslagaccount
- Azure Blob Storage-container
- SAS-beleid
Dit script begint met het declareren van een aantal variabelen om de namen voor de bovenstaande resources en de namen van de volgende vereiste invoerwaarden op te geven:
- Een voorvoegselnaam die wordt gebruikt bij het benoemen van andere resourceobjecten
- Abonnementsnaam
- Locatie van datacenter
Het script wordt voltooid door de juiste CREATE CREDENTIAL-instructie te genereren die u in 2 gebruikt: een SQL Server-referentie maken met behulp van een shared access signature. Deze verklaring wordt voor u naar het klembord gekopieerd en wordt weergegeven in de console, zodat u het kunt zien.
Als u een beleid voor de container wilt maken en een Shared Access Signature (SAS) wilt genereren, voert u de volgende stappen uit:
Open Windows PowerShell of Windows PowerShell ISE (zie de bovenstaande versievereisten).
Bewerk het onderstaande script en voer het volgende script uit:
# 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
Nadat het script is voltooid, bevindt de instructie 'CREDENTIAL AANMAKEN' zich op het klembord voor gebruik in de volgende sectie.
2 - Een SQL Server-referentie maken met een Shared Access Signature
In deze sectie maakt u referentiegegevens aan voor het opslaan van de beveiligingsinformatie die door SQL Server worden gebruikt om te schrijven naar en te lezen uit de Azure Blob Storage-container die u in de vorige stap hebt gemaakt.
Een SQL Server-referentie is een object dat wordt gebruikt voor het opslaan van verificatiegegevens die nodig zijn om verbinding te maken met een resource buiten SQL Server. De referentie slaat het URI-pad van de Azure Blob Storage-container en de shared access signature voor deze container op.
Voer de volgende stappen uit om een SQL Server-referentie te maken:
Start SSMS.
Open een nieuw queryvenster en maak verbinding met het SQL Server-exemplaar van de database-engine in uw on-premises omgeving.
Plak in het nieuwe queryvenster de instructie CREATE CREDENTIAL met de Shared Access Signature uit sectie 1 en voer dat script uit.
Het script ziet eruit als de volgende code.
/* 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
Als u alle beschikbare referenties wilt zien, kunt u de volgende instructie uitvoeren in een queryvenster dat is verbonden met uw instantie.
SELECT * from sys.credentials
Open een nieuw queryvenster en maak verbinding met het SQL Server-exemplaar van de database-engine in uw virtuele Azure-machine.
Plak in het nieuwe queryvenster de instructie CREATE CREDENTIAL met de Shared Access Signature uit sectie 1 en voer dat script uit.
Herhaal stap 5 en 6 voor eventuele extra SQL Server-exemplaren waartoe u toegang wilt hebben tot de container.
3 - Back-up van database naar URL
In deze sectie maakt u een back-up van de AdventureWorks2022
-database in uw SQL Server-exemplaar naar de container die u in sectie 1hebt gemaakt.
Notitie
Als u een back-up wilt maken van een SQL Server 2012 (11.x) SP1 CU2+-database of een SQL Server 2014-database (12.x) naar deze container, kunt u de afgeschafte syntaxis gebruiken die hier wordt beschreven hier om een back-up naar URL te maken met behulp van de WITH CREDENTIAL
syntaxis.
Als u een back-up wilt maken van een database naar blobopslag, voert u de volgende stappen uit:
Start SSMS.
Open een nieuw queryvenster en maak verbinding met het SQL Server-exemplaar op uw virtuele Azure-machine.
Kopieer en plak het volgende Transact-SQL script in het queryvenster. Wijzig de URL op de juiste manier voor de naam van uw opslagaccount en de container die u hebt opgegeven in sectie 1 en voer dit script uit.
-- 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'
Open Objectverkenner en maak verbinding met Azure Storage met behulp van uw opslagaccount en accountsleutel.
- Vouw Containersuit, vouw de container uit die u in sectie 1 hebt gemaakt en controleer of de back-up uit stap 3 hierboven wordt weergegeven in deze container.
4 - Database herstellen naar virtuele machine vanuit URL
In deze sectie herstelt u de AdventureWorks2022
-database naar uw SQL Server-exemplaar in uw virtuele Azure-machine.
Notitie
Voor het gemak in deze zelfstudie gebruiken we dezelfde container voor de gegevens en logboekbestanden die we hebben gebruikt voor de back-up van de database. In een productieomgeving zou u waarschijnlijk ook meerdere containers en vaak meerdere gegevensbestanden gebruiken. U kunt ook overwegen om uw back-up over meerdere blobs te verdelen om de prestaties te verbeteren bij het maken van een back-up van een grote database.
Voer de volgende stappen uit om de AdventureWorks2022
-database te herstellen van Azure Blob Storage naar uw SQL Server-exemplaar in uw virtuele Azure-machine:
Start SSMS.
Open een nieuw queryvenster en maak verbinding met het SQL Server-exemplaar van de database-engine in uw virtuele Azure-machine.
Kopieer en plak het volgende Transact-SQL script in het queryvenster. Wijzig de URL op de juiste manier voor de naam van uw opslagaccount en de container die u hebt opgegeven in sectie 1 en voer dit script uit.
-- 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
Open Objectverkenner en maak verbinding met uw Azure SQL Server-exemplaar.
Vouw in Objectverkenner het knooppunt Databases uit en controleer of de
AdventureWorks2022
database is hersteld (vernieuw het knooppunt indien nodig)- Klik met de rechtermuisknop op AdventureWorks2022, en selecteer Eigenschappen.
- Selecteer Bestanden en controleer of de paden voor de twee databasebestanden URL's zijn die verwijzen naar blobs in uw Azure Blob Storage-container (selecteer Annuleren wanneer u klaar bent).
Maak in Objectverkenner verbinding met Azure Storage.
- Vouw Containersuit, vouw de container uit die u in sectie 1 hebt gemaakt en controleer of de
AdventureWorks2022_Data.mdf
enAdventureWorks2022_Log.ldf
uit stap 3 hierboven worden weergegeven in deze container, samen met het back-upbestand uit sectie 3 (vernieuw het knooppunt indien nodig).
- Vouw Containersuit, vouw de container uit die u in sectie 1 hebt gemaakt en controleer of de
5 - Back-up van database maken met back-up van bestandsmomentopnamen
In deze sectie maakt u een back-up van de AdventureWorks2022
-database op uw virtuele Azure-machine met behulp van back-ups van bestandsmomentopnamen om een bijna onmiddellijke back-up uit te voeren met behulp van Azure-momentopnamen. Zie File-Snapshot Back-ups voor databasebestanden in Azure voor meer informatie over back-ups van momentopnamen
Volg deze stappen om een back-up te maken van de AdventureWorks2022
-database met behulp van back-ups van bestandsmomentopnamen:
Start SSMS.
Open een nieuw queryvenster en maak verbinding met het SQL Server-exemplaar van de database-engine in uw virtuele Azure-machine.
Kopieer, plak en voer het volgende Transact-SQL script uit in het queryvenster (sluit dit queryvenster niet. U voert dit script opnieuw uit in stap 5. Met deze door het systeem opgeslagen procedure kunt u de bestaande back-ups van momentopnamen van bestanden weergeven voor elk bestand dat een opgegeven database bevat. U zult merken dat er geen back-ups van bestandsmomentopnamen zijn voor deze database.
-- Verify that no file snapshot backups exist SELECT * FROM sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
Kopieer en plak het volgende Transact-SQL script in het queryvenster. Wijzig de URL op de juiste manier voor de naam van uw opslagaccount en de container die u hebt opgegeven in sectie 1 en voer dit script uit. U ziet hoe snel deze back-up plaatsvindt.
-- 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;
Nadat u hebt gecontroleerd of het script in stap 4 is uitgevoerd, voert u het volgende script opnieuw uit. Merk op dat de back-upbewerking voor momentopnamen van bestanden in stap 4 bestandsmomentopnamen van zowel de data als het logboekbestand genereerde.
-- Verify that two file-snapshot backups exist SELECT * FROM sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
Vouw in Objectverkenner in uw SQL Server-exemplaar op uw virtuele Azure-machine het Databases-knooppunt uit en controleer of de
AdventureWorks2022
database is hersteld naar dit exemplaar (vernieuw het knooppunt indien nodig).Maak in Objectverkenner verbinding met Azure Storage.
Vouw Containersuit, vouw de container uit die u in sectie 1 hebt gemaakt en controleer of de
AdventureWorks2022_Azure.bak
uit stap 4 hierboven wordt weergegeven in deze container, samen met het back-upbestand uit sectie 3 en de databasebestanden uit sectie 4 (vernieuw het knooppunt indien nodig).
6 - Activiteiten- en back-uplogboek genereren met back-up van bestandsmomentopnamen
In deze sectie genereert u activiteit in de AdventureWorks2022
-database en maakt u periodiek back-ups van transactielogboeken met behulp van back-ups van bestandsmomentopnamen. Zie File-Snapshot Back-ups voor databasebestanden in Azurevoor meer informatie over het gebruik van back-ups van momentopnamen van bestanden.
Als u activiteit wilt genereren in de AdventureWorks2022
-database en periodiek back-ups van transactielogboeken wilt maken met behulp van back-ups van bestandsmomentopnamen, voert u de volgende stappen uit:
Start SSMS.
Open twee nieuwe queryvensters en verbind elk met het SQL Server-exemplaar van de database-engine in uw virtuele Azure-machine.
Kopieer, plak en voer het volgende Transact-SQL script uit in een van de queryvensters. U ziet dat de
Production.Location
tabel 14 rijen bevat voordat we nieuwe rijen toevoegen in stap 4.-- Verify row count at start SELECT COUNT (*) from AdventureWorks2022.Production.Location;
Kopieer en plak de volgende twee Transact-SQL scripts in de twee afzonderlijke queryvensters. Wijzig de URL op de juiste wijze voor de naam van uw opslagaccount en de container die u hebt opgegeven in sectie 1 en voer deze scripts vervolgens tegelijkertijd uit in afzonderlijke queryvensters. Het duurt ongeveer zeven minuten voordat deze scripts zijn voltooid.
-- 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;
Bekijk de uitvoer van het eerste script en u ziet dat het uiteindelijke aantal rijen nu 29.939 is.
Controleer de uitvoer van het tweede script en u ziet dat telkens wanneer de INSTRUCTIE BACKUP LOG wordt uitgevoerd, twee nieuwe momentopnamen van bestanden worden gemaakt, één momentopname van het logboekbestand en één momentopname van het gegevensbestand, voor een totaal van twee momentopnamen van bestanden voor elk databasebestand. Nadat het tweede script is voltooid, ziet u dat er nu in totaal 16 momentopnamen van bestanden zijn, 8 voor elk databasebestand, één uit de instructie BACKUP DATABASE en één voor elke uitvoering van de BACKUP LOG-instructie.
Maak in Objectverkenner verbinding met Azure Storage.
Vouw Containersuit, vouw de container uit die u in sectie 1 hebt gemaakt en controleer of er zeven nieuwe back-upbestanden worden weergegeven, samen met de gegevensbestanden uit de vorige secties (vernieuw het knooppunt indien nodig).
7 - Een database herstellen naar een bepaald tijdstip
In deze sectie herstelt u de AdventureWorks2022
database naar een bepaald tijdstip tussen twee back-ups van het transactielogboek.
Met traditionele back-ups moet u voor herstel naar een bepaald tijdstip de volledige databaseback-up gebruiken, misschien een differentiële back-up en alle transactielogboekbestanden tot en net voorbij het tijdstip waarop u wilt herstellen. Met bestandssnapshots-back-ups hebt u alleen de twee aangrenzende logboekback-upbestanden nodig die de tijdsmarkeringen geven voor de periode waarnaar u wilt herstellen. U hebt slechts twee back-ups van logboekbestanden nodig omdat elke logboekback-up een momentopname van elk databasebestand maakt (elk gegevensbestand en het logboekbestand).
Voer de volgende stappen uit om een database te herstellen naar een bepaald tijdstip vanuit back-upsets voor momentopnamen van bestanden:
Start SSMS.
Open een nieuw queryvenster en maak verbinding met het SQL Server-exemplaar van de database-engine in uw virtuele Azure-machine.
Kopieer, plak en voer het volgende Transact-SQL script uit in het queryvenster. Controleer of de
Production.Location
tabel 29.939 rijen bevat voordat we deze herstellen naar een bepaald tijdstip wanneer er minder rijen in stap 4 zijn.-- Verify row count at start SELECT COUNT (*) from AdventureWorks2022.Production.Location
Kopieer en plak het volgende Transact-SQL script in het queryvenster. Selecteer twee aangrenzende logboekback-upbestanden en converteer de bestandsnaam naar de datum en tijd die u nodig hebt voor dit script. Wijzig de URL op de juiste manier voor de naam van uw opslagaccount en de container die u hebt opgegeven in sectie 1, geef de eerste en tweede back-upbestandsnamen op, geef de STOPAT-tijd op in de indeling '26 juni 2018 01:48 PM' en voer vervolgens dit script uit. Het voltooien van dit script duurt enkele minuten
-- 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 ;
Controleer de uitvoer. U ziet dat na het herstellen het aantal rijen 18.389 is. Dit is een aantal rijen tussen logboekback-up 5 en 6 (het aantal rijen varieert).
8 - Herstellen als nieuwe database vanuit logboekback-up
In deze sectie herstelt u de AdventureWorks2022
-database als een nieuwe database vanuit een back-up van transactielogboeken voor bestandsmomentopnamen.
In dit scenario voert u een herstelbewerking uit naar een SQL Server-exemplaar op een andere virtuele machine voor bedrijfsanalyse en -rapportage. Als u herstelt naar een ander exemplaar op een andere virtuele machine, wordt de werkbelasting verplaatst naar een virtuele machine die speciaal voor dit doel is toegewezen en gespecificeerd, waardoor de middelen van het transactionele systeem worden ontlast.
Herstellen vanuit een back-up van een transactielogboek met back-up van bestandsmomentopnamen is zeer snel, aanzienlijk sneller dan bij traditionele streamingback-ups. Met traditionele streamingback-ups moet u de volledige databaseback-up gebruiken, mogelijk een differentiële back-up en sommige of alle back-ups van transactielogboeken (of een nieuwe volledige databaseback-up). Bij back-ups van logboeken met momentopnamen hebt u echter alleen de meest recente logboekback-up nodig (of een andere logboekback-up of twee aangrenzende logboekback-ups voor herstel naar een bepaald tijdstip tussen twee back-ups van logboeken). U hebt slechts één back-upset van logbestand-snapshots nodig, omdat elke back-up van een bestandssnapshot een snapshot van elk databasebestand maakt (elk gegevensbestand en het logbestand).
Als u een database wilt herstellen naar een nieuwe database vanuit een back-up van een transactielogboek met behulp van back-up van bestandsmomentopnamen, voert u de volgende stappen uit:
Start SSMS.
Open een nieuw queryvenster en maak verbinding met het SQL Server-exemplaar van de database-engine in een virtuele Azure-machine.
Notitie
Als dit een andere virtuele Azure-machine is dan u in de vorige secties hebt gebruikt, moet u ervoor zorgen dat u de stappen in 2 hebt gevolgd: een SQL Server-referentie maken met een shared access Signature-. Als u naar een andere container wilt herstellen, volgt u de stappen in 1 - maak een opgeslagen toegangsbeleid en gedeelde toegang opslag voor de nieuwe container.
Kopieer en plak het volgende Transact-SQL script in het queryvenster. Selecteer het logboekback-upbestand dat u wilt gebruiken. Wijzig de URL op de juiste manier voor de naam van uw opslagaccount en de container die u hebt opgegeven in sectie 1, geef de naam van het logboekback-upbestand op en voer dit script uit.
-- 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
Controleer de uitvoer om te controleren of het herstellen is geslaagd.
Maak in Objectverkenner verbinding met Azure Storage.
Vouw Containersuit, vouw de container uit die u hebt gemaakt in sectie 1 (indien nodig vernieuwen) en controleer of de nieuwe gegevens en logboekbestanden in de container worden weergegeven, samen met de blobs uit de vorige secties.
9 - Back-upsets en back-ups van momentopnamen beheren
In deze sectie verwijdert u een back-upset met behulp van de systeemopgeslagen procedure sp_delete_backup (Transact-SQL). Met deze opgeslagen procedure verwijdert u het back-upbestand en de momentopname van het bestand in elk databasebestand dat aan deze back-upset is gekoppeld.
Notitie
Als u probeert een back-upset te verwijderen door het back-upbestand uit de Azure Blob Storage-container te verwijderen, verwijdert u alleen het back-upbestand zelf. De bijbehorende momentopnamen blijven behouden. Als u zich in dit scenario bevindt, gebruikt u de sys.fn_db_backup_file_snapshots (Transact-SQL) systeemfunctie om de URL van de zwevende bestandsmomentopnamen te identificeren en de sp_delete_backup_file_snapshot (Transact-SQL) te gebruiken systeem opgeslagen procedure om elke zwevende bestandsmomentopname te verwijderen. Zie File-Snapshot Backups for Database Files in Azurevoor meer informatie.
Voer de volgende stappen uit om een back-upset met momentopnamen te verwijderen:
Start SSMS.
Open een nieuw queryvenster en maak verbinding met het SQL Server-exemplaar van de database-engine in uw virtuele Azure-machine (of met een SQL Server-exemplaar met machtigingen voor lezen en schrijven op deze container).
Kopieer en plak het volgende Transact-SQL script in het queryvenster. Selecteer de logboekback-up die u wilt verwijderen, samen met de bijbehorende momentopnamen van bestanden. Wijzig de URL op de juiste manier voor de naam van uw opslagaccount en de container die u hebt opgegeven in sectie 1, geef de naam van het logboekback-upbestand op en voer dit script uit.
sys.sp_delete_backup 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/tutorial-21764-20181003205236.bak';
Maak in Objectverkenner verbinding met Azure Storage.
Vouw Containersuit, vouw de container uit die u in sectie 1 hebt gemaakt en controleer of het back-upbestand dat u in stap 3 hebt gebruikt, niet meer wordt weergegeven in deze container (vernieuw het knooppunt indien nodig).
Kopieer, plak en voer het volgende Transact-SQL script uit in het queryvenster om te controleren of twee momentopnamen van bestanden zijn verwijderd.
-- verify that two file snapshots have been removed SELECT * from sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
10 - Resources verwijderen
Zodra u klaar bent met deze zelfstudie en resources wilt besparen, moet u de resourcegroep verwijderen die in deze zelfstudie is gemaakt.
Voer de volgende PowerShell-code uit om de resourcegroep te verwijderen:
# 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
Volgende stappen
- SQL Server-gegevensbestanden in Microsoft Azure
- File-Snapshot Back-ups voor databasebestanden in Azure
- Backup van SQL Server naar URL
- Shared Access Signatures, deel 1: Informatie over het SAS-model
- Container maken
- container-ACL instellen
- Container-ACL ophalen
- Referenties (Database-Engine)
- 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 Back-ups voor databasebestanden in Azure