Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2016 (13.x) et versions ultérieures
Ce tutoriel vous aide à comprendre comment utiliser le Stockage Blob Azure pour les fichiers de données et les sauvegardes dans SQL Server 2016 (13.x) et versions ultérieures.
La prise en charge du stockage Blob Azure dans SQL Server a été introduite dans SQL Server 2012 (11.x) Service Pack 1 CU2 et améliorée dans les versions ultérieures. Pour obtenir une vue d’ensemble des fonctionnalités et avantages de l’utilisation de cette fonctionnalité, consultez les fichiers de données SQL Server dans Microsoft Azure.
Ce tutoriel vous montre comment utiliser des fichiers de données SQL Server dans Stockage Blob Azure dans plusieurs sections. Chaque section se concentre sur une tâche spécifique et vous devez effectuer les sections dans la séquence. Tout d’abord, vous allez apprendre à créer un conteneur dans Le Stockage Blob avec une stratégie d’accès stockée et une signature d’accès partagé. Ensuite, vous allez apprendre à créer des informations d’identification SQL Server pour intégrer SQL Server à Stockage Blob Azure. Ensuite, vous sauvegardez une base de données dans Stockage Blob et restaurez-la sur une machine virtuelle Azure. Vous utilisez ensuite la sauvegarde du journal des transactions d’instantané de fichier SQL Server pour effectuer une restauration à un point dans le temps et dans une nouvelle base de données. Enfin, le tutoriel montre l’utilisation des procédures stockées et des fonctions du système de métadonnées pour vous aider à comprendre et à utiliser des sauvegardes d’instantanés de fichiers.
Conditions préalables
Pour suivre ce tutoriel, vous devez être familiarisé avec les concepts de sauvegarde et de restauration SQL Server et la syntaxe T-SQL.
Pour utiliser ce didacticiel, vous avez besoin d’un compte de stockage Azure, de SQL Server Management Studio (SSMS), d’un accès à une instance de SQL Server locale, d’un accès à une machine virtuelle Azure exécutant une instance de SQL Server 2016 (13.x) ou version ultérieure et d’une AdventureWorks2025 base de données. En outre, le compte utilisé pour émettre les BACKUP commandes doit RESTORE se trouver dans le rôle de base de données db_backupoperator avec modifier les autorisations d’informations d’identification .
- Obtenez un compte Azure gratuit.
- Créez un compte de stockage Azure.
- Installez SQL Server 2017 Developer Edition.
- Provisionnez une machine virtuelle Azure exécutant SQL Server.
- Installez SQL Server Management Studio.
- Téléchargez un échantillon de base de données AdventureWorks.
- Affectez le compte d’utilisateur au rôle de db_backupoperator et accordez-lui les autorisations d’informations d’identification .
Important
SQL Server ne prend pas en charge Azure Data Lake Storage. Vérifiez que l’espace de noms hiérarchique n’est pas activé sur le compte de stockage utilisé pour ce didacticiel.
1 - Créer une stratégie d’accès stockée et un stockage d’accès partagé
Dans cette section, vous utilisez un script Azure PowerShell pour créer une signature d’accès partagé sur un conteneur stockage Blob Azure à l’aide d’une stratégie d’accès stockée.
Remarque
Ce script est écrit à l’aide d’Azure PowerShell 5.0.10586.
Une signature d’accès partagé est un URI qui accorde des droits d’accès restreints aux conteneurs, aux objets blob, aux files d’attente ou aux tables. Une stratégie d’accès stockée fournit un niveau de contrôle supplémentaire sur les signatures d’accès partagé côté serveur, notamment la révocation, l’expiration ou l’extension de l’accès. Lorsque vous utilisez cette nouvelle amélioration, vous devez créer une stratégie sur un conteneur avec au moins des droits de lecture, d’écriture et de liste.
Vous pouvez créer une stratégie d’accès stockée et une signature d’accès partagé à l’aide d’Azure PowerShell, du Kit de développement logiciel (SDK) Stockage Azure, de l’API REST Azure ou d’un utilitaire tiers. Ce tutoriel montre comment utiliser un script Azure PowerShell pour effectuer cette tâche. Le script utilise le modèle de déploiement Resource Manager et crée les nouvelles ressources suivantes
- groupe de ressources
- Compte de stockage
- Conteneur de stockage d'objets blob Azure
- Stratégie SAP
Ce script commence par déclarer plusieurs variables pour spécifier les noms des ressources précédentes et les noms des valeurs d’entrée requises suivantes :
- Nom de préfixe utilisé pour nommer d’autres objets de ressource
- Nom d’abonnement
- Emplacement du centre de données
Le script se termine en générant l’instruction appropriée CREATE CREDENTIAL que vous utilisez dans 2 : créez des informations d’identification SQL Server à l’aide d’une signature d’accès partagé. Cette instruction est copiée dans votre Presse-papiers pour vous et est sortie dans la console pour que vous voyiez.
Pour créer une stratégie sur le conteneur et générer une signature d’accès partagé (SAP), procédez comme suit :
Ouvrez Windows PowerShell ou Windows PowerShell ISE (consultez la configuration requise pour la version précédente).
Modifiez, puis exécutez le script suivant :
# Define global variables for the script $prefixName = '<a prefix name>' # used as the prefix for the name for various objects $subscriptionID = '<your subscription ID>' # the ID of subscription name you will use $locationName = '<a data center location>' # the data center region you will use $storageAccountName = $prefixName + 'storage' # the storage account name you will create or use $containerName = $prefixName + 'container' # the storage container name to which you will attach the SAS policy with its SAS token $policyName = $prefixName + 'policy' # the name of the SAS policy # Set a variable for the name of the resource group you will create or use $resourceGroupName = $prefixName + 'rg' # Add an authenticated Azure account for use in the session Connect-AzAccount # Set the tenant, subscription and environment for use in the rest of Set-AzContext -SubscriptionId $subscriptionID # Create a new resource group - comment out this line to use an existing resource group New-AzResourceGroup -Name $resourceGroupName -Location $locationName # Create a new Azure Resource Manager storage account - comment out this line to use an existing Azure Resource Manager storage account New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Type Standard_RAGRS -Location $locationName # Get the access keys for the Azure Resource Manager storage account $accountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName # Create a new storage account context using an Azure Resource Manager storage account $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].Value # Creates a new container in Blob Storage $container = New-AzStorageContainer -Context $storageContext -Name $containerName # Sets up a Stored Access Policy and a Shared Access Signature for the new container $policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -StartTime $(Get-Date).ToUniversalTime().AddMinutes(-5) -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission rwld # Gets the Shared Access Signature for the policy $sas = New-AzStorageContainerSASToken -name $containerName -Policy $policyName -Context $storageContext Write-Host 'Shared Access Signature= '$($sas.Substring(1))'' # Sets the variables for the new container you just created $container = Get-AzStorageContainer -Context $storageContext -Name $containerName $cbc = $container.CloudBlobContainer # Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature Write-Host 'Credential T-SQL' $tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='SHARED ACCESS SIGNATURE', SECRET='{1}'" -f $cbc.Uri, $sas Set-Clipboard -Value $tSql Write-Host $tSql # Once you're done with the tutorial, remove the resource group to clean up the resources. # Remove-AzResourceGroup -Name $resourceGroupNameUne fois le script terminé, l’instruction
CREATE CREDENTIALse trouve dans votre Presse-papiers à utiliser dans la section suivante.
2 - Créer des informations d’identification SQL Server à l’aide d’une signature d’accès partagé
Dans cette section, vous allez créer des informations d’identification pour stocker les informations de sécurité, utilisées par SQL Server pour écrire et lire à partir du conteneur Stockage Blob Azure que vous avez créé à l’étape précédente.
Les informations d’identification SQL Server sont un objet utilisé pour stocker les informations d’authentification requises pour se connecter à une ressource en dehors de SQL Server. Les informations d’identification stockent le chemin d’URI du conteneur Stockage Blob Azure et la signature d’accès partagé pour ce conteneur.
Pour créer des informations d’identification SQL Server, procédez comme suit :
Lancez SSMS.
Ouvrez une nouvelle fenêtre de requête et connectez-vous à l’instance SQL Server du moteur de base de données dans votre environnement local.
Dans la nouvelle fenêtre de requête, collez l’instruction
CREATE CREDENTIALavec la signature d’accès partagé à partir de la section 1 et exécutez ce script.Le script ressemble au code suivant.
/* Example: USE master CREATE CREDENTIAL [https://msfttutorial.blob.core.windows.net/containername] WITH IDENTITY='SHARED ACCESS SIGNATURE' , SECRET = 'sharedaccesssignature' GO */ USE master; CREATE CREDENTIAL [https://<storage-account>.blob.core.windows.net/<container-name>] -- this name must match the container path, start with https and must not contain a forward slash at the end WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- this is a mandatory string and should not be changed SECRET = 'sharedaccesssignature'; -- this is the shared access signature key that you obtained in section 1. GOPour afficher toutes les informations d’identification disponibles, vous pouvez exécuter l’instruction suivante dans une fenêtre de requête connectée à votre instance :
SELECT * FROM sys.credentials;Ouvrez une nouvelle fenêtre de requête et connectez-vous à l’instance SQL Server du moteur de base de données dans votre machine virtuelle Azure.
Dans la nouvelle fenêtre de requête, collez l’instruction
CREATE CREDENTIALavec la signature d’accès partagé à partir de la section 1 et exécutez ce script.Répétez les étapes 5 et 6 pour toutes les instances SQL Server supplémentaires que vous souhaitez avoir accès au conteneur.
3 - Sauvegarde de base de données vers l’URL
Dans cette section, vous sauvegardez la AdventureWorks2025 base de données dans votre instance SQL Server dans le conteneur que vous avez créé dans la section 1.
Pour sauvegarder une base de données dans le stockage d’objets blob, procédez comme suit :
Lancez SSMS.
Ouvrez une nouvelle fenêtre de requête et connectez-vous à l’instance SQL Server dans votre machine virtuelle Azure.
Copiez et collez le script Transact-SQL suivant dans la fenêtre de requête. Modifiez l’URL de manière appropriée pour le nom de votre compte de stockage et le conteneur que vous avez spécifiés dans la section 1, puis exécutez ce script.
-- To permit log backups, before the full database backup, modify the database to use the full recovery model. USE master; ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL; -- Back up the full AdventureWorks2022 database to the container that you created in section 1 BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_onprem.bak';Ouvrez l’Explorateur d’objets et connectez-vous au stockage Azure à l’aide de votre compte de stockage et de votre clé de compte.
- Développez Conteneurs, développez le conteneur que vous avez créé dans la section 1 et vérifiez que la sauvegarde de l’étape 3 précédente apparaît dans ce conteneur.
4 - Restaurer la base de données sur une machine virtuelle à partir de l’URL
Dans cette section, vous restaurez la AdventureWorks2025 base de données sur votre instance SQL Server dans votre machine virtuelle Azure.
Remarque
Pour des raisons de simplicité dans ce didacticiel, nous utilisons le même conteneur pour les fichiers de données et de journaux que nous avons utilisés pour la sauvegarde de base de données. Dans un environnement de production, vous utiliseriez probablement plusieurs conteneurs et fréquemment plusieurs fichiers de données. Vous pouvez également envisager de supprimer votre sauvegarde sur plusieurs objets blob pour augmenter les performances de sauvegarde lors de la sauvegarde d’une base de données volumineuse.
Pour restaurer la AdventureWorks2025 base de données à partir du Stockage Blob Azure sur votre instance SQL Server sur votre machine virtuelle Azure, procédez comme suit :
Lancez SSMS.
Ouvrez une nouvelle fenêtre de requête et connectez-vous à l’instance SQL Server du moteur de base de données dans votre machine virtuelle Azure.
Copiez et collez le script Transact-SQL suivant dans la fenêtre de requête. Modifiez l’URL de manière appropriée pour le nom de votre compte de stockage et le conteneur que vous avez spécifiés dans la section 1, puis exécutez ce script.
-- Restore AdventureWorks2022 from URL to SQL Server instance using Azure Blob Storage for database files RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_onprem.bak' WITH MOVE 'AdventureWorks2022_data' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Data.mdf', MOVE 'AdventureWorks2022_log' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Log.ldf'; --, REPLACEOuvrez l’Explorateur d’objets et connectez-vous à votre instance Azure SQL Server.
Dans l’Explorateur d’objets, développez le nœud Bases de données et vérifiez que la
AdventureWorks2025base de données a été restaurée (actualisez le nœud si nécessaire).Cliquez avec le bouton droit sur AdventureWorks2025, puis sélectionnez Propriétés.
Sélectionnez Fichiers et vérifiez que les chemins des deux fichiers de base de données sont des URL pointant vers des objets blob dans votre conteneur Stockage Blob Azure (sélectionnez Annuler lorsque vous avez terminé).
Dans l’Explorateur d’objets, connectez-vous au stockage Azure.
- Développez Conteneurs, développez le conteneur que vous avez créé dans la section 1 et vérifiez que l’étape
AdventureWorks2022_Data.mdfAdventureWorks2022_Log.ldf3 précédente apparaît dans ce conteneur, ainsi que le fichier de sauvegarde de la section 3 (actualisez le nœud si nécessaire).
- Développez Conteneurs, développez le conteneur que vous avez créé dans la section 1 et vérifiez que l’étape
5 - Sauvegarder une base de données à l’aide de la sauvegarde d’instantané de fichier
Dans cette section, vous sauvegardez la AdventureWorks2025 base de données dans votre machine virtuelle Azure à l’aide de la sauvegarde d’instantanés de fichiers pour effectuer une sauvegarde presque instantanée à l’aide d’instantanés Azure. Pour plus d’informations sur les sauvegardes d’instantanés de fichiers, consultez File-Snapshot Sauvegardes pour les fichiers de base de données dans Azure
Pour sauvegarder la base de données à l’aide de la AdventureWorks2025 sauvegarde d’instantané de fichier, procédez comme suit :
Lancez SSMS.
Ouvrez une nouvelle fenêtre de requête et connectez-vous à l’instance SQL Server du moteur de base de données dans votre machine virtuelle Azure.
Copiez, collez et exécutez le script Transact-SQL suivant dans la fenêtre de requête (ne fermez pas cette fenêtre de requête . vous réexécutez ce script à l’étape 5). Cette procédure stockée système vous permet d’afficher les sauvegardes d’instantanés de fichiers existantes pour chaque fichier qui comprend une base de données spécifiée. Vous pouvez voir qu’il n’existe aucune sauvegarde de capture instantanée de fichier pour cette base de données.
-- Verify that no file snapshot backups exist SELECT * FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');Copiez et collez le script Transact-SQL suivant dans la fenêtre de requête. Modifiez l’URL de manière appropriée pour le nom de votre compte de stockage et le conteneur que vous avez spécifiés dans la section 1, puis exécutez ce script. Notez la rapidité avec laquelle cette sauvegarde se produit.
-- Backup the AdventureWorks2022 database with FILE_SNAPSHOT BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Azure.bak' WITH FILE_SNAPSHOT;Après avoir vérifié que le script à l’étape 4 a été exécuté avec succès, réexécutez le script suivant. L’opération de sauvegarde d’instantané de fichier à l’étape 4 a généré des instantanés de fichiers à la fois des données et du fichier journal.
-- Verify that two file-snapshot backups exist SELECT * FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');Dans l’Explorateur d’objets, dans votre instance SQL Server de votre machine virtuelle Azure, développez le nœud Bases de données et vérifiez que la
AdventureWorks2025base de données a été restaurée sur cette instance (actualisez le nœud si nécessaire).Dans l’Explorateur d’objets, connectez-vous au stockage Azure.
Développez Conteneurs, développez le conteneur que vous avez créé dans la section 1 et vérifiez que l’étape
AdventureWorks2022_Azure.bak4 précédente apparaît dans ce conteneur, ainsi que le fichier de sauvegarde de la section 3 et les fichiers de base de données de la section 4 (actualisez le nœud si nécessaire).
6 - Générer l’activité et le journal de sauvegarde à l’aide de la sauvegarde d’instantané de fichier
Dans cette section, vous générez une activité dans la base de données et créez régulièrement des sauvegardes de journal des transactions à l’aide AdventureWorks2025 de sauvegardes d’instantanés de fichiers. Pour plus d’informations sur l’utilisation des sauvegardes d’instantanés de fichiers, consultez File-Snapshot Sauvegardes pour les fichiers de base de données dans Azure.
Pour générer une activité dans la AdventureWorks2025 base de données et créer régulièrement des sauvegardes de journal des transactions à l’aide de sauvegardes d’instantanés de fichiers, procédez comme suit :
Lancez SSMS.
Ouvrez deux nouvelles fenêtres de requête et connectez-vous à l’instance SQL Server du moteur de base de données dans votre machine virtuelle Azure.
Copiez, collez et exécutez le script Transact-SQL suivant dans l’une des fenêtres de requête. Le
Production.Locationtableau comporte 14 lignes avant d’ajouter de nouvelles lignes à l’étape 4.-- Verify row count at start SELECT COUNT(*) FROM AdventureWorks2022.Production.Location;Copiez et collez les deux scripts Transact-SQL suivants dans les deux fenêtres de requête distinctes. Modifiez l’URL de manière appropriée pour le nom de votre compte de stockage et le conteneur que vous avez spécifiés dans la section 1, puis exécutez ces scripts simultanément dans des fenêtres de requête distinctes. Ces scripts prennent quelques minutes.
-- Insert 30,000 new rows into the Production.Location table in the AdventureWorks2022 database in batches of 75 DECLARE @count AS INT = 1, @inner AS INT; WHILE @count < 400 BEGIN BEGIN TRANSACTION; SET @inner = 1; WHILE @inner <= 75 BEGIN INSERT INTO AdventureWorks2022.Production.Location ( Name, CostRate, Availability, ModifiedDate ) VALUES (NEWID(), .5, 5.2, GETDATE()); SET @inner = @inner + 1; END COMMIT TRANSACTION; WAITFOR DELAY '00:00:01'; SET @count = @count + 1; END SELECT COUNT(*) FROM AdventureWorks2022.Production.Location;--take 7 transaction log backups with FILE_SNAPSHOT, one per minute, and include the row count and the execution time in the backup file name DECLARE @count INT=1, @device NVARCHAR(120), @numrows INT; WHILE @count <= 7 BEGIN SET @numrows = (SELECT COUNT (*) FROM AdventureWorks2022.Production.Location); SET @device = 'https://<storage-account>.blob.core.windows.net/<container-name>/tutorial-' + CONVERT (varchar(10),@numrows) + '-' + FORMAT(GETDATE(), 'yyyyMMddHHmmss') + '.bak'; BACKUP LOG AdventureWorks2022 TO URL = @device WITH FILE_SNAPSHOT; SELECT * from sys.fn_db_backup_file_snapshots ('AdventureWorks2022'); WAITFOR DELAY '00:1:00'; SET @count = @count + 1; END;Passez en revue la sortie du premier script et notez que le nombre de lignes final est maintenant de 29 939.
Passez en revue la sortie du deuxième script et notez que chaque fois que l’instruction
BACKUP LOGest exécutée, deux nouveaux instantanés de fichier sont créés, un instantané de fichier du fichier journal et un instantané de fichier du fichier de données , pour un total de deux captures instantanées de fichier pour chaque fichier de base de données. Une fois le deuxième script terminé, notez qu’il y a maintenant un total de 16 captures instantanées de fichier, 8 pour chaque fichier de base de données , un à partir de l’instructionBACKUP DATABASEet un pour chaque exécution de l’instructionBACKUP LOG.Dans l’Explorateur d’objets, connectez-vous au stockage Azure.
Développez Conteneurs, développez le conteneur que vous avez créé dans la section 1 et vérifiez que sept nouveaux fichiers de sauvegarde apparaissent, ainsi que les fichiers de données des sections précédentes (actualisez le nœud si nécessaire).
7 - Restaurer une base de données à un point dans le temps
Dans cette section, vous restaurez la AdventureWorks2025 base de données à un point dans le temps entre deux sauvegardes du journal des transactions.
Avec les sauvegardes traditionnelles, pour effectuer une restauration à un point dans le temps, vous devez utiliser la sauvegarde complète de la base de données, peut-être une sauvegarde différentielle, et tous les fichiers journaux des transactions jusqu’au moment où vous souhaitez effectuer la restauration. Avec les sauvegardes d’instantanés de fichiers, vous n’avez besoin que des deux fichiers de sauvegarde de journaux adjacents qui fournissent les publications d’objectif encadrant l’heure à laquelle vous souhaitez effectuer la restauration. Vous n’avez besoin que de deux jeux de sauvegarde d’instantanés de fichier journal, car chaque sauvegarde de journal crée un instantané de fichier de chaque fichier de base de données (chaque fichier de données et le fichier journal).
Pour restaurer une base de données à un point spécifié dans le temps à partir des jeux de sauvegarde d’instantanés de fichiers, procédez comme suit :
Lancez SSMS.
Ouvrez une nouvelle fenêtre de requête et connectez-vous à l’instance SQL Server du moteur de base de données dans votre machine virtuelle Azure.
Copiez, collez et exécutez le script Transact-SQL suivant dans la fenêtre de requête. Vérifiez que la
Production.Locationtable comporte 29 939 lignes avant de la restaurer à un point dans le temps où il y a moins de lignes à l’étape 4.-- Verify row count at start SELECT COUNT(*) FROM AdventureWorks2022.Production.Location;
Copiez et collez le script Transact-SQL suivant dans la fenêtre de requête. Sélectionnez deux fichiers de sauvegarde de journaux adjacents et convertissez le nom du fichier dans la date et l’heure dont vous avez besoin pour ce script. Modifiez l’URL de manière appropriée pour le nom de votre compte de stockage et le conteneur que vous avez spécifiés dans la section 1. Fournissez les noms des fichiers de sauvegarde premier et deuxième, fournissez l’heure
STOPATau format ,June 26, 2018 01:48 PMpuis exécutez ce script. La fin de l’opération prend quelques minutes.-- restore and recover to a point in time between the times of two transaction log backups, and then verify the row count ALTER DATABASE AdventureWorks2022 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<firstbackupfile>.bak' WITH NORECOVERY, REPLACE; RESTORE LOG AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<secondbackupfile>.bak' WITH RECOVERY, STOPAT = 'June 26, 2018 01:48 PM'; ALTER DATABASE AdventureWorks2022 SET MULTI_USER; -- get new count SELECT COUNT(*) FROM AdventureWorks2022.Production.Location;Passez en revue la sortie. Une fois la restauration terminée, le nombre de lignes est de 18 389, qui est un nombre de lignes compris entre la sauvegarde du journal 5 et 6 (votre nombre de lignes peut varier).
8 - Restaurer en tant que nouvelle base de données à partir de la sauvegarde de journal
Dans cette section, vous restaurez la AdventureWorks2025 base de données en tant que nouvelle base de données à partir d’une sauvegarde du journal des transactions d’instantané de fichier.
Dans ce scénario, vous effectuez une restauration sur une instance SQL Server sur une autre machine virtuelle à des fins d’analyse et de création de rapports métier. La restauration vers une autre instance sur une autre machine virtuelle décharge la charge de travail sur une machine virtuelle dédiée et dimensionnée à cet effet, en supprimant ses besoins en ressources du système transactionnel.
La restauration à partir d’une sauvegarde du journal des transactions avec sauvegarde d’instantané de fichier est rapide, beaucoup plus rapide que les sauvegardes de streaming traditionnelles. Avec les sauvegardes de streaming traditionnelles, vous devez utiliser la sauvegarde complète de la base de données, peut-être une sauvegarde différentielle, et certaines ou toutes les sauvegardes du journal des transactions (ou une nouvelle sauvegarde complète de base de données). Toutefois, avec les sauvegardes de journaux d’instantanés de fichiers, vous avez uniquement besoin de la sauvegarde de journal la plus récente (ou toute autre sauvegarde de journal ou de deux sauvegardes de journaux adjacentes pour une restauration à un point dans le temps entre deux heures de sauvegarde de journal). Pour être clair, vous n’avez besoin que d’un seul jeu de sauvegarde de capture instantanée de fichier journal, car chaque sauvegarde de journal d’instantané de fichier crée un instantané de fichier de chaque fichier de base de données (chaque fichier de données et le fichier journal).
Pour restaurer une base de données vers une nouvelle base de données à partir d’une sauvegarde du journal des transactions à l’aide de la sauvegarde d’instantané de fichier, procédez comme suit :
Lancez SSMS.
Ouvrez une nouvelle fenêtre de requête et connectez-vous à l’instance SQL Server du moteur de base de données dans une machine virtuelle Azure.
S’il s’agit d’une machine virtuelle Azure différente de celle que vous utilisez pour les sections précédentes, vérifiez que vous avez suivi les étapes décrites dans 2 : créez des informations d’identification SQL Server à l’aide d’une signature d’accès partagé. Si vous souhaitez restaurer sur un autre conteneur, suivez les étapes décrites dans 1 : Créer une stratégie d’accès stockée et un stockage d’accès partagé pour le nouveau conteneur.
Copiez et collez le script Transact-SQL suivant dans la fenêtre de requête. Sélectionnez le fichier de sauvegarde du journal que vous souhaitez utiliser. Modifiez l’URL de manière appropriée pour le nom de votre compte de stockage et le conteneur que vous avez spécifiés dans la section 1, fournissez le nom du fichier de sauvegarde du journal, puis exécutez ce script.
-- restore as a new database from a transaction log backup file RESTORE DATABASE AdventureWorks2022_EOM FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<logbackupfile.bak>' WITH MOVE 'AdventureWorks2022_data' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_EOM_Data.mdf', MOVE 'AdventureWorks2022_log' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_EOM_Log.ldf', RECOVERY; --, REPLACEPassez en revue la sortie pour vérifier que la restauration a réussi.
Dans l’Explorateur d’objets, connectez-vous au stockage Azure.
Développez Conteneurs, développez le conteneur que vous avez créé dans la section 1 (actualisez si nécessaire) et vérifiez que les nouveaux fichiers de données et de journaux apparaissent dans le conteneur, ainsi que les objets blob des sections précédentes.
9 - Gérer les jeux de sauvegarde et les sauvegardes d’instantanés de fichiers
Dans cette section, vous supprimez un jeu de sauvegarde à l’aide de la procédure stockée système sp_delete_backup . Cette procédure stockée système supprime le fichier de sauvegarde et l’instantané de fichier sur chaque fichier de base de données associé à ce jeu de sauvegarde.
Remarque
Si vous tentez de supprimer un jeu de sauvegarde en supprimant le fichier de sauvegarde du conteneur Stockage Blob Azure, vous supprimez uniquement le fichier de sauvegarde lui-même. Les instantanés de fichiers associés restent. Si vous vous trouvez dans ce scénario, utilisez la fonction système sys.fn_db_backup_file_snapshots pour identifier l’URL des instantanés de fichiers orphelins et utilisez la procédure stockée système sp_delete_backup_file_snapshot pour supprimer chaque instantané de fichier orphelin. Pour plus d’informations, consultez Sauvegarde d’instantanés de fichiers pour les fichiers de base de données dans Azure.
Pour supprimer un jeu de sauvegarde d’instantanés de fichiers, procédez comme suit :
Lancez SSMS.
Ouvrez une nouvelle fenêtre de requête et connectez-vous à l’instance SQL Server du moteur de base de données dans votre machine virtuelle Azure (ou à n’importe quelle instance SQL Server disposant des autorisations de lecture et d’écriture sur ce conteneur).
Copiez et collez le script Transact-SQL suivant dans la fenêtre de requête. Sélectionnez la sauvegarde du journal que vous souhaitez supprimer, ainsi que ses instantanés de fichiers associés. Modifiez l’URL de manière appropriée pour le nom de votre compte de stockage et le conteneur que vous avez spécifiés dans la section 1, fournissez le nom du fichier de sauvegarde du journal, puis exécutez ce script.
EXECUTE sys.sp_delete_backup 'https://<storage-account>.blob.core.windows.net/<container-name>/tutorial-21764-20181003205236.bak';Dans l’Explorateur d’objets, connectez-vous au stockage Azure.
Développez Conteneurs, développez le conteneur que vous avez créé dans la section 1 et vérifiez que le fichier de sauvegarde que vous avez utilisé à l’étape 3 n’apparaît plus dans ce conteneur (actualisez le nœud si nécessaire).
Copiez, collez et exécutez le script Transact-SQL suivant dans la fenêtre de requête pour vérifier que deux instantanés de fichier ont été supprimés.
-- verify that two file snapshots have been removed SELECT * FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');
10 - Supprimer des ressources
Une fois que vous avez terminé ce didacticiel et que vous conservez des ressources, veillez à supprimer le groupe de ressources créé dans ce didacticiel.
Pour supprimer le groupe de ressources, exécutez le code PowerShell suivant :
# 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
Contenu connexe
- Fichiers de données SQL Server dans Microsoft Azure
- Sauvegardes instantanées de fichiers pour les bases de données dans Azure
- Sauvegarde SQL Server vers une URL pour Azure Blob Storage
- Signatures d’accès partagé, partie 1 : Présentation du modèle SAP
- Créer un conteneur
- Définir l'ACL du conteneur
- Obtenir la liste de contrôle d’accès du conteneur
- Informations d’identification (moteur de base de données)
- CRÉER CRÉDENTIAL (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)