Partage via


Tutoriel : Utiliser Stockage Blob Azure avec SQL Server

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 .

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 :

  1. Ouvrez Windows PowerShell ou Windows PowerShell ISE (consultez la configuration requise pour la version précédente).

  2. 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 $resourceGroupName
    
  3. Une fois le script terminé, l’instruction CREATE CREDENTIAL se 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 :

  1. Lancez SSMS.

  2. 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.

  3. Dans la nouvelle fenêtre de requête, collez l’instruction CREATE CREDENTIAL avec 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.
    GO
    
  4. Pour 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;
    
  5. 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.

  6. Dans la nouvelle fenêtre de requête, collez l’instruction CREATE CREDENTIAL avec la signature d’accès partagé à partir de la section 1 et exécutez ce script.

  7. 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 :

  1. Lancez SSMS.

  2. Ouvrez une nouvelle fenêtre de requête et connectez-vous à l’instance SQL Server dans votre machine virtuelle Azure.

  3. 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';
    
  4. Ouvrez l’Explorateur d’objets et connectez-vous au stockage Azure à l’aide de votre compte de stockage et de votre clé de compte.

    1. 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.

    Capture d’écran du processus à plusieurs étapes pour se connecter au compte stockage Azure.

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 :

  1. Lancez SSMS.

  2. 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.

  3. 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';
         --, REPLACE
    
  4. Ouvrez l’Explorateur d’objets et connectez-vous à votre instance Azure SQL Server.

  5. Dans l’Explorateur d’objets, développez le nœud Bases de données et vérifiez que la AdventureWorks2025 base de données a été restaurée (actualisez le nœud si nécessaire).

    1. Cliquez avec le bouton droit sur AdventureWorks2025, puis sélectionnez Propriétés.

    2. 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é).

    Capture d’écran de SSMS de la base de données AdventureWorks2022 sur la machine virtuelle Azure.

  6. Dans l’Explorateur d’objets, connectez-vous au stockage Azure.

    1. 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.ldf 3 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).

    Capture d’écran de l’Explorateur d’objets dans SSMS montrant les fichiers de données au sein du conteneur, sur Azure sous une entrée d’instance SQL Server.

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 :

  1. Lancez SSMS.

  2. 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.

  3. 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');
    
  4. 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;
    
  5. 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');
    

    Capture d’écran de SSMS des résultats de fn_db_backup_file_snapshots, montrant des captures instantanées.

  6. 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 AdventureWorks2025 base de données a été restaurée sur cette instance (actualisez le nœud si nécessaire).

  7. Dans l’Explorateur d’objets, connectez-vous au stockage Azure.

  8. Développez Conteneurs, développez le conteneur que vous avez créé dans la section 1 et vérifiez que l’étape AdventureWorks2022_Azure.bak 4 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).

    Capture d’écran de l’Explorateur d’objets dans SSMS montrant la sauvegarde d’instantanés sur Azure.

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 :

  1. Lancez SSMS.

  2. 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.

  3. Copiez, collez et exécutez le script Transact-SQL suivant dans l’une des fenêtres de requête. Le Production.Location tableau comporte 14 lignes avant d’ajouter de nouvelles lignes à l’étape 4.

    -- Verify row count at start
    SELECT COUNT(*)
    FROM AdventureWorks2022.Production.Location;
    
  4. 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;
    
  5. Passez en revue la sortie du premier script et notez que le nombre de lignes final est maintenant de 29 939.

    Capture d’écran de SSMS montrant un jeu de résultats avec le nombre de lignes de 29 939.

  6. Passez en revue la sortie du deuxième script et notez que chaque fois que l’instruction BACKUP LOG est 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’instruction BACKUP DATABASE et un pour chaque exécution de l’instruction BACKUP LOG .

    Capture d’écran de SSMS montrant le jeu de résultats de l’historique des instantanés de sauvegarde.

  7. Dans l’Explorateur d’objets, connectez-vous au stockage Azure.

  8. 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).

    Capture d’écran de l’Explorateur d’objets dans SSMS avec plusieurs instantanés dans Azure Container.

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 :

  1. Lancez SSMS.

  2. 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.

  3. Copiez, collez et exécutez le script Transact-SQL suivant dans la fenêtre de requête. Vérifiez que la Production.Location table 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;
    

    Capture d’écran des résultats SSMS montrant un nombre de lignes de 29 939.

  4. 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 STOPAT au 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;
    
  5. 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).

    Capture d’écran de 18 000 lignes.

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 :

  1. Lancez SSMS.

  2. 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.

  3. 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;
         --, REPLACE
    
  4. Passez en revue la sortie pour vérifier que la restauration a réussi.

  5. Dans l’Explorateur d’objets, connectez-vous au stockage Azure.

  6. 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.

    Capture d’écran du navigateur de stockage de SQL Server Management Studio des conteneurs Azure montrant les données et les fichiers journaux de la nouvelle base de données.

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 :

  1. Lancez SSMS.

  2. 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).

  3. 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';
    
  4. Dans l’Explorateur d’objets, connectez-vous au stockage Azure.

  5. 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).

    Capture d’écran du navigateur de stockage SQL Server Management Studios montrant les conteneurs Azure et la suppression de l’objet blob de sauvegarde du journal des transactions.

  6. 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');
    

    Capture d’écran du volet de résultats SSMS montrant deux instantanés de fichier supprimés.

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