Cloner une base de données Microsoft SQL Server sur Compute Engine


Ce tutoriel présente deux méthodes pour cloner une base de données Microsoft SQL Server exécutée sur Compute Engine. L'une d'entre elles consiste à utiliser des instantanés de disque persistant. L'autre méthode utilise la sauvegarde et la restauration SQL Server natives, en transférant la sauvegarde à l'aide de Cloud Storage. Cloud Storage est le service de stockage d'objets de Google Cloud. Il offre un moyen simple, sécurisé, durable et hautement disponible de stocker des fichiers.

Le clonage est le processus de copie d'une base de données en ligne sur un autre serveur. La copie est indépendante de la base de données existante et est conservée en tant qu'instantané à un moment précis. Vous pouvez utiliser une base de données clonée à des fins diverses sans charger le serveur de production ou nuire à l'intégrité des données de production. Voici certains objectifs de ce processus :

  • Effectuer des requêtes analytiques
  • Effectuer des tests de charge ou d'intégration sur vos applications
  • Extraire des données pour remplir des entrepôts de données
  • Effectuer des tests sur les données

Chaque méthode de clonage décrite dans ce tutoriel présente des avantages et des inconvénients. La méthode la plus adaptée dépend de votre situation. Le tableau suivant met en évidence certains problèmes clés.

Problème Méthode 1 : Instantanés de disque Méthode 2 : Sauvegarde et restauration à l'aide de Cloud Storage
Espace disque supplémentaire requis pour les instances SQL Server Aucun espace disque supplémentaire requis Espace supplémentaire requis pour le stockage du fichier de sauvegarde lors de la création et de la restauration
Charge supplémentaire sur les instances SQL Server sources lors du clonage Aucune charge supplémentaire Charge supplémentaire sur le processeur et les E/S lors de la création et de l'importation des fichiers de sauvegarde
Durée du clonage Relativement rapide pour les bases de données volumineuses Relativement lent pour les bases de données volumineuses
Clonage possible à partir d'instances SQL Server externes à Google Cloud Non Oui
Complexité Séquence complexe de commandes pour installer des disques clonés Ensemble de commandes relativement simples pour le clonage
Possibilité d'exploiter des systèmes de sauvegarde existants Oui, si le système de sauvegarde utilise des instantanés de disque Google Cloud Oui, si le système de sauvegarde écrit des fichiers de sauvegarde SQL Server natifs dans Cloud Storage
Précision du clonage Ne peut cloner que des disques entiers Ne peut cloner que la base de données spécifiée
Cohérence des données Cohérence au moment de l'instantané Cohérence au moment de la sauvegarde

Pour ce tutoriel, nous partons du principe que vous connaissez l'administration système de Microsoft Windows, PowerShell et Microsoft SQL Server à l'aide de Microsoft SQL Server Management Studio.

Objectifs

  • Découvrez comment exécuter une instance SQL Server sur Google Cloud.
  • Apprendre à créer une base de données de démonstration sur un disque secondaire
  • Découvrez comment cloner une base de données SQL Server à l'aide d'instantanés de disque Compute Engine.
  • Découvrez comment cloner une base de données SQL Server en transférant une sauvegarde à l'aide de Cloud Storage.

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  6. Activez l'API Compute Engine.
  7. Activer l'API

Assurez-vous de remplir les conditions préalables suivantes :

Configurer l'environnement

Pour suivre ce tutoriel, vous devez configurer votre environnement informatique avec les éléments suivants :

  • Une instance SQL Server sur Compute Engine (nommée sql-server-prod) pour représenter votre serveur de base de données de production.
  • Un disque supplémentaire (nommé sql-server-prod-data) associé à votre serveur de production pour stocker votre base de données de production.
  • Une copie de l'exemple de base de données SQL Server Wide World Importers pour simuler la base de données de production que vous souhaitez cloner.
  • Une instance SQL Server sur Compute Engine (nommée sql-server-test) pour représenter votre serveur de base de données de test. Vous clonez votre base de données sur ce serveur.

Cette architecture est décrite dans le schéma suivant.

Schéma illustrant la configuration du clonage d'une base de données SQL Server dans ce tutoriel.

Créer l'instance de VM de production

Pour simuler un environnement de production, vous devez configurer une instance de VM Compute Engine exécutant SQL Server sur Windows Server.

L'instance de VM de ce tutoriel utilise deux disques : un disque de 50 Go pour le système d'exploitation et les comptes utilisateur, et un disque de 100 Go pour le stockage de la base de données.

Dans Compute Engine, l'utilisation de disques distincts n'offre aucun avantage en termes de performances. Les performances des disques sont déterminées par la capacité de stockage totale de tous les disques associés à une instance et par le nombre total de processeurs virtuels sur votre instance de VM. Par conséquent, la base de données et le fichier journal peuvent résider sur le même disque.

Console

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Cliquez sur Créer.

  3. Dans le champ Nom, saisissez sql-server-prod.

  4. Dans le champ Région, sélectionnez us-east1.

  5. Pour la Zone, sélectionnez us-east1-b.

  6. Sous Configuration de la machine, définissez le type de machine sur n1-standard-2 (deux processeurs virtuels).

  7. À côté de la description du disque de démarrage, cliquez sur Modifier.

  8. Dans le panneau Disque de démarrage, cliquez sur l'onglet Images publiques.

  9. Dans la liste déroulante Système d'exploitation, sélectionnez SQL Server sur Windows Server.

  10. Dans la liste déroulante Version, sélectionnez SQL Server 2022 Standard sur Windows Server 2022 Datacenter.

  11. Assurez-vous que les valeurs suivantes sont définies :

    • Le champ Type de disque de démarrage est défini sur Disque persistant standard.
    • Le champ Taille (Go) est défini sur 50.
  12. Cliquez sur Sélectionner.

  13. Sous Identité et accès aux API, définissez le paramètre Champs d'application sur Autoriser l'accès complet à l'ensemble des API Cloud.

  14. Développez Gestion, sécurité, disques, mise en réseau et location unique.

  15. Cliquez sur l'onglet Disques.

  16. Cliquez sur Add new disk (Ajouter un disque) .

  17. Dans le champ Nom, saisissez sql-server-prod-data.

  18. Dans le champ Taille (Go), saisissez 100.

  19. Cliquez sur OK.

  20. Cliquez sur Créer.

Cloud Shell

  1. Ouvrez Cloud Shell.

    Ouvrir Cloud Shell

  2. Initialisez les variables suivantes :

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Où :

    • VPC_NAME : nom de votre VPC
    • SUBNET_NAME : nom de votre sous-réseau
  3. Définissez votre ID de projet par défaut :

    gcloud config set project PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

  4. Définissez votre région par défaut :

    gcloud config set compute/region REGION
    

    Remplacez REGION par l'ID de la région dans laquelle vous souhaitez effectuer le déploiement.

  5. Définissez votre zone par défaut :

    gcloud config set compute/zone ZONE
    

    Remplacez ZONE par l'ID de la zone dans laquelle vous souhaitez effectuer le déploiement.

  6. Créez une instance Compute Engine à l'aide de l'image d'application pour SQL Server 2022 Standard sur Windows Server 2022 Datacenter :

    REGION=$(gcloud config get-value compute/region)
    ZONE=$(gcloud config get-value compute/zone)
    
    gcloud compute instances create sql-server-prod \
        --machine-type=n1-standard-2 \
        --scopes=cloud-platform \
        --image-family=sql-std-2022-win-2022 \
        --image-project=windows-sql-cloud \
        --boot-disk-size=50GB \
        --boot-disk-device-name=sql-server-prod \
        --create-disk="mode=rw,size=100,type=pd-standard,name=sql-server-prod-data,device-name=sql-server-prod-data" \
        --subnet=$SUBNET_NAME
    

    Cette commande accorde à l'instance un accès complet aux API Google Cloud, crée un disque secondaire de 100 Go et associe le disque à l'instance. Vous pouvez ignorer l'avertissement sur les performances du disque, car vous n'avez pas besoin de performances élevées pour ce tutoriel.

Se connecter à l'instance de VM

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Attendez environ cinq minutes que l'instance de VM soit prête.

    Pour surveiller le processus d'initialisation de la VM, consultez sa sortie du port série dans Cloud Shell :

    gcloud compute instances tail-serial-port-output sql-server-prod
    

    L'initialisation est terminée lorsque le message suivant s'affiche.

    Instance setup finished. sql-server-prod is ready to use.
    

    Appuyez sur Ctrl+C pour arrêter de surveiller le port série.

  3. Cliquez sur le nom de l'instance sql-server-prod pour ouvrir la page Informations sur l'instance de VM.

  4. Sous Accès à distance, cliquez sur Définir un mot de passe Windows, puis sur Définir pour créer votre compte sur la machine distante.

    Cette étape génère automatiquement votre mot de passe. Notez le mot de passe ou copiez-le dans un fichier temporaire sécurisé.

  5. Dans la section Compute Engine de la console Google Cloud, cliquez sur le menu déroulant RDP et sélectionnez l'option Télécharger le fichier RDP. pour télécharger le fichier RDP correspondant à votre instance.

    Utilisez ce fichier pour vous connecter à l'instance à l'aide d'un client RDP. Pour plus d'informations, voir les clients Bureau à distance de Microsoft.

  6. Lorsque vous y êtes invité, saisissez le mot de passe que vous venez de générer, puis cliquez sur OK.

  7. Pour accepter le certificat du serveur et vous connecter à votre instance Windows distante, cliquez sur Continuer.

  8. Lorsque vous êtes invité à indiquer si votre ordinateur peut être détecté par d'autres PC et appareils du réseau, cliquez sur Non.

Configurer le disque supplémentaire

Le deuxième disque installé sur l'instance de production sert à stocker votre base de données de production. Ce disque est vide. Vous devez donc le partitionner, le formater et l'installer.

  1. Dans une session RDP connectée à votre instance sql-server-prod, cliquez sur le bouton Démarrer dans la barre des tâches Windows, saisissez diskpart, puis cliquez sur diskpart pour ouvrir l'outil DiskPart.
  2. Lorsque vous êtes invité à autoriser l'application à apporter des modifications, cliquez sur Oui.
  3. Affichez une liste des disques associés à votre instance :

    list disk
    

    Le résultat est le suivant :

    Disk ###  Status         Size     Free     Dyn  Gpt
    --------  -------------  -------  -------  ---  ---
    Disk 0    Online           50 GB      0 B
    Disk 1    Online          100 GB   100 GB
    

    Le disque 1 (100 Go) est votre disque de données.

  4. Sélectionnez le disque de données :

    select disk 1
    
  5. Initialisez le disque :

    clean
    
  6. Créez une table de partition GUID :

    convert gpt
    
  7. Créez la partition de données en utilisant l'intégralité du disque :

    create partition primary
    
  8. Répertoriez les volumes disponibles :

    list volume
    

    Le résultat est le suivant :

    Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
    ----------  ---  -----------  -----  ----------  -------  ---------  --------
    Volume 0     C                NTFS   Partition     49 GB  Healthy    Boot
    Volume 1                      FAT32  Partition    100 MB  Healthy    System
    Volume 2                      RAW    Partition     99 GB  Healthy
    

    Le volume 2 (99 Go) est votre disque de données.

  9. Sélectionnez le volume :

    select volume 2
    
  10. Formatez la partition avec le système de fichiers NTFS et nommez-la data :

    format quick fs=ntfs label=data
    
  11. Installez le disque en tant que lecteur D :

    assign letter=d
    
  12. Quittez l'outil DiskPart :

    exit
    

Télécharger l'exemple de base de données

Pour configurer votre environnement pour cet exercice de clonage, procédez comme suit :

  • Créez une structure de répertoires sur le lecteur D (data) pour stocker votre base de données.
  • Téléchargez le fichier de sauvegarde complète de l'exemple de base de données SQL Server Wide World Importers. Cette base de données simule la base de données de production que vous souhaitez cloner.

Pour créer le répertoire et télécharger le fichier de sauvegarde, procédez comme suit :

  1. Dans votre session RDP, cliquez sur le bouton Démarrer dans la barre des tâches Windows, saisissez PowerShell, puis sélectionnez l'application Windows PowerShell.

  2. Lorsque l'invite PowerShell s'affiche, créez une structure de répertoires pour le stockage de la base de données :

    mkdir D:\sql-server-data\wideworldimporters
    
  3. Téléchargez le fichier de sauvegarde pour le lecteur D :

    bitsadmin /transfer sampledb /dynamic /download /priority FOREGROUND `
      https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak `
      D:\sql-server-data\WideWorldImporters-Full.bak
    

Restaurer l'exemple de base de données

Vous devez restaurer l'exemple de base de données pour gérer le lecteur D (data), de manière interactive à l'aide des assistants Microsoft SQL Server Management Studio (SSMS) ou directement en exécutant une commande Transact-SQL.

Assistant SSMS

  1. Dans votre session RDP, cliquez sur le bouton Start (Démarrer) dans la barre des tâches Windows, saisissez ssms, puis sélectionnez Microsoft SQL Server Management Studio (Run as Administrator) (Exécuter en tant qu'administrateur).
  2. Après le démarrage de l'application, cliquez sur Connect (Connecter) pour vous connecter au moteur de base de données sql-server-prod à l'aide de l'authentification Windows.
  3. Dans l'explorateur d'objets, faites un clic droit sur Databases (Bases de données), puis sélectionnez Restore Database (Restaurer la base de données).
  4. Dans Source, sélectionnez Device (Appareil), puis cliquez sur le bouton [...] à côté du nom de l'appareil.
  5. Dans la boîte de dialogue Select backup devices (Sélectionner des appareils de sauvegarde), assurez-vous que l'option File (Fichier) est sélectionnée pour Backup media type (Type de support de sauvegarde), puis cliquez sur Add (Ajouter).
  6. Dans le sélecteur de fichiers, accédez à D:\sql-server-data, cliquez sur le fichier WideWorldImporters-Full.bak, puis sur OK.
  7. Cliquez sur OK pour fermer la boîte de dialogue Select backup devices (Sélectionner des appareils de sauvegarde).

    La boîte de dialogue Restore Database (Restaurer la base de données) contient désormais des données concernant la sauvegarde de la base de données Wide World Importers.

  8. Dans Select a page (Sélectionner une page), cliquez sur Files (Fichiers).

  9. Cochez la case Relocate all files to folder (Déplacer tous les fichiers dans le dossier).

  10. Dans les champs Data file folder (Dossier de fichiers de données) et Log file folder (Dossier de fichiers journaux), saisissez D:\sql-server-data\wideworldimporters.

    Capture d'écran montrant la boîte de dialogue Restore Database (Restaurer la base de données).

  11. Cliquez sur OK pour lancer l'opération de restauration.

Après quelques minutes, vous êtes informé que la base de données est restaurée.

Transact-SQL

  1. Dans votre session RDP, cliquez sur le bouton Start (Démarrer) dans la barre des tâches Windows, saisissez ssms, puis sélectionnez Microsoft SQL Server Management Studio (Run as Administrator) (Exécuter en tant qu'administrateur).
  2. Après le démarrage de l'application, cliquez sur Connect (Connecter) pour vous connecter au moteur de base de données sql-server-prod à l'aide de l'authentification Windows.
  3. Sélectionnez File > New > Query with Current Connection (Fichier > Nouveau > Requête avec la connexion actuelle) pour ouvrir une nouvelle fenêtre de requête.
  4. Lancez une restauration à partir du fichier de sauvegarde que vous avez téléchargé :

    USE [master]
    GO
    
    RESTORE DATABASE [WideWorldImporters]
      FROM  DISK = N'D:\SQL-SERVER-DATA\WideWorldImporters-Full.bak'
      WITH  FILE = 1,
      MOVE N'WWI_Primary' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.mdf',
      MOVE N'WWI_UserData' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_UserData.ndf',
      MOVE N'WWI_Log' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.ldf',
      MOVE N'WWI_InMemory_Data_1' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_InMemory_Data_1',
      NOUNLOAD,
      STATS = 5
    GO
    

    Cette commande restaure la base de données et le fichier journal dans le répertoire D:\sql-server-data\wideworldimporters.

  5. Faites un clic droit sur le code de la requête, puis cliquez sur Execute (Exécuter).

    Attendez quelques minutes que la restauration de la base de données se termine. Vous pouvez cliquer sur Refresh (Actualiser) dans l'explorateur d'objets pour voir si la base de données est répertoriée dans l'arborescence des bases de données. Une fois la restauration de la base de données terminée, vous pouvez fermer la fenêtre de requête sans enregistrer.

Pour vérifier que l'exemple de base de données fonctionne, vous pouvez exécuter une requête.

  1. Dans Microsoft SQL Server Management Studio, sélectionnez File > New > Query with Current Connection (Fichier > Nouveau > Requête avec la connexion actuelle) pour ouvrir une nouvelle fenêtre de requête, puis copiez le code suivant :

    SELECT top(100)
      i.InvoiceDate, i.InvoiceID, i.CustomerID, c.CustomerName,
      i.ConfirmedDeliveryTime, i.ConfirmedReceivedBy
    FROM
      WideWorldImporters.Sales.Invoices i
      JOIN WideWorldImporters.Sales.Customers c
      ON i.CustomerID=c.CustomerID
    WHERE i.ConfirmedDeliveryTime IS NOT NULL
    ORDER BY i.InvoiceDate desc;
    

    Cette requête extrait les informations récapitulatives des 100 dernières factures envoyées.

  2. Faites un clic droit sur la fenêtre de requête, puis cliquez sur Execute (Exécuter).

    Le volet Results (Résultats) affiche les informations récapitulatives.

    Capture d'écran montrant le volet Results (Résultats) d'une requête à l'exemple de base de données.

Créer l'instance de VM de test

Dans cette section, vous allez créer une instance SQL Server nommée sql-server-test comme destination de la base de données clonée. La configuration de cette instance est identique à celle de l'instance de production. Cependant, vous ne créez pas de deuxième disque de données. À la place, vous associez le disque de données comme décrit plus loin dans ce tutoriel.

Console

  1. Accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Cliquez sur Créer.

  3. Dans le champ Nom, saisissez sql-server-test.

  4. Dans le champ Région, sélectionnez us-east1.

  5. Pour Zone, sélectionnez us-east1-b.

  6. Sous Configuration de la machine, définissez le type de machine sur n1-standard-2 (deux processeurs virtuels).

  7. À côté de l'image Disque de démarrage, cliquez sur Modifier.

  8. Dans le panneau Disque de démarrage, cliquez sur l'onglet Images publiques.

  9. Dans la liste déroulante Système d'exploitation, sélectionnez SQL Server sur Windows Server.

  10. Dans la liste déroulante Version, sélectionnez SQL Server 2022 Standard sur Windows Server 2022 Datacenter.

  11. Assurez-vous que les valeurs suivantes sont définies :

    • Le champ Type de disque de démarrage est défini sur Disque persistant standard.
    • Le champ Taille (Go) est défini sur 50.
  12. Cliquez sur Sélectionner.

  13. Sous Identité et accès aux API, définissez le paramètre Champs d'application sur Autoriser l'accès complet à l'ensemble des API Cloud.

  14. Cliquez sur Créer.

Cloud Shell

  1. Ouvrez Cloud Shell.

    Ouvrir Cloud Shell

  2. Créez l'instance SQL Server de test :

    gcloud compute instances create sql-server-test \
        --machine-type=n1-standard-2 \
        --scopes=cloud-platform \
        --image-family=sql-std-2022-win-2022 \
        --image-project=windows-sql-cloud \
        --boot-disk-size=50GB \
        --boot-disk-device-name=sql-server-test \
        --subnet=$SUBNET_NAME
    

    Vous pouvez ignorer l'avertissement sur les performances du disque, car vous n'avez pas besoin de performances élevées pour ce tutoriel.

Se connecter à l'instance de VM

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Attendez environ cinq minutes que l'instance de VM soit prête.

    Pour surveiller le processus d'initialisation de la VM, consultez sa sortie du port série dans Cloud Shell :

    gcloud compute instances tail-serial-port-output sql-server-prod
    

    L'initialisation est terminée lorsque le message suivant s'affiche.

    Instance setup finished. sql-server-test is ready to use.
    

    Appuyez sur Ctrl+C pour arrêter de surveiller le port série.

  3. Cliquez sur le nom de l'instance sql-server-test pour afficher la page Informations sur l'instance de VM.

  4. Sous Accès à distance, cliquez sur Définir un mot de passe Windows, puis sur Définir pour créer votre compte sur la machine distante.

    Cette étape génère automatiquement votre mot de passe. Notez le mot de passe ou copiez-le dans un fichier temporaire sécurisé.

  5. Dans la section Compute Engine de la console Google Cloud, cliquez sur le menu déroulant RDP et sélectionnez l'option Télécharger le fichier RDP. pour télécharger le fichier RDP correspondant à votre instance.

    Utilisez ce fichier pour vous connecter à l'instance à l'aide d'un client RDP. Pour plus d'informations, voir les clients Bureau à distance de Microsoft.

  6. Lorsque vous y êtes invité, saisissez le mot de passe que vous venez de générer, puis cliquez sur OK.

  7. Pour accepter le certificat du serveur et vous connecter à votre instance Windows distante, cliquez sur Continuer.

  8. Lorsque vous êtes invité à indiquer si vous souhaitez que votre PC soit visible, cliquez sur Non.

Cloner la base de données à l'aide d'instantanés de disque Compute Engine

Pour cloner une base de données SQL Server exécutée sur Compute Engine, vous pouvez la stocker sur un disque de données distinct et utiliser des instantanés de disque persistant pour créer un clone de ce disque.

Les instantanés de disque persistant vous permettent d'obtenir une copie des données sur disque à un moment précis. La programmation des instantanés de disque permet de sauvegarder automatiquement vos données.

Dans cette section du tutoriel, vous allez :

  • réaliser un instantané du disque de données du serveur de production ;
  • créer un disque à partir de l'instantané ;
  • Installer le nouveau disque sur le serveur de test
  • Associer la base de données de ce disque à SQL Server sur l'instance de test.

Le schéma suivant montre comment une base de données est clonée à l'aide d'instantanés de disque.

Schéma illustrant la configuration du clonage d'une base de données SQL Server à l'aide d'instantanés de disque.

Créer l'instantané de disque

Console

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Cliquez sur le nom de l'instance sql-server-prod.

  3. Sur la page Détails de l'instance de VM, cliquez sur le disque sql-server-prod-data.

  4. Cliquez sur Créer un instantané.

  5. Nommez-le sql-server-prod-data-snapshot.

  6. Pour l'Emplacement, sélectionnez Régional.

  7. Vérifiez que la région est définie sur us-east1 (la même que vos instances de VM).

  8. Sélectionnez l'option Activer VSS.

    Cette option utilise le Volume Shadow Copy Service (VSS) de Microsoft Windows pour créer un instantané cohérent.

  9. Cliquez sur Créer.

    Au bout de quelques minutes, votre instantané est créé.

Cloud Shell

  1. Ouvrez Cloud Shell.

    Ouvrir Cloud Shell

  2. Créez un instantané de votre disque de données dans la même zone que l'instance de VM :

    gcloud compute disks snapshot sql-server-prod-data \
         --snapshot-names=sql-server-prod-data-snapshot \
         --guest-flush \
         --zone="${ZONE}"
    

    L'option --guest-flush utilise le Volume Shadow Copy Service (VSS) de Microsoft Windows pour créer un instantané cohérent. Au bout de quelques minutes, votre instantané est créé.

Associer l'instantané du disque à l'instance de test

Vous devez créer un disque de données à partir de l'instantané que vous avez créé, puis l'associer à l'instance sql-server-test.

Console

Dans les étapes suivantes, vous allez créer un disque persistant, utiliser le contenu de l'instantané du disque de production, puis associer le disque à l'instance de test.

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Cliquez sur le nom de l'instance sql-server-test.

  3. Sur la page Informations sur l'instance de VM, cliquez sur Modifier.

  4. Cliquez sur Add new disk (Ajouter un disque) .

  5. Nommez le nouveau disque sql-server-test-data.

  6. Pour le Type de source, sélectionnez Instantané.

  7. Pour l'instance sql-server-prod-data-snapshot que vous avez créée, sélectionnez l'Instantané source.

  8. Assurez-vous que l'option Mode est définie sur Lecture/Écriture.

  9. Cliquez sur OK.

Cloud Shell

  1. Ouvrez Cloud Shell.

    Ouvrir Cloud Shell

  2. Créez un disque persistant en utilisant le contenu de l'instantané du disque de production :

    gcloud beta compute disks create sql-server-test-data \
         --size=100GB \
         --source-snapshot=sql-server-prod-data-snapshot \
         --zone="${ZONE}"
    
  3. Associez le nouveau disque à votre instance sql-server-test avec des autorisations de lecture/écriture :

    gcloud compute instances attach-disk sql-server-test \
        --disk=sql-server-test-data --mode=rw
    

Installer le nouveau disque de données sous Windows

Le disque que vous avez créé est associé à l'instance de VM, mais est hors connexion, et le volume est en lecture seule. Pour configurer le volume comme étant en lecture-écriture et installable, procédez comme suit :

  1. Dans la fenêtre du client RDP connecté à votre instance sql-server-test, cliquez sur le bouton Démarrer de la barre des tâches Windows, saisissez diskpart, puis cliquez sur diskpart pour ouvrir DiskPart.
  2. Lorsque vous êtes invité à autoriser l'application à apporter des modifications, cliquez sur Oui.
  3. Affichez la liste des disques associés à votre instance :

    list disk
    

    Le résultat est le suivant :

    
    Disk ###  Status         Size     Free     Dyn  Gpt
    --------  -------------  -------  -------  ---  ---
    Disk 0    Online           50 GB      0 B
    Disk 1    Offline         100 GB      0 B       *
     

    Votre disque de données (Disque 1, 100 Go) est hors connexion.

  4. Sélectionnez le disque de données :

    select disk 1
    
  5. Mettez le disque en ligne :

    online disk
    
  6. Répertoriez les volumes disponibles :

    list volume
    

    Le résultat est le suivant :

    Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
    ----------  ---  -----------  -----  ----------  -------  ---------  --------
    Volume 0     C                NTFS   Partition     49 GB  Healthy    Boot
    Volume 1                      FAT32  Partition    100 MB  Healthy    System
    Volume 2                      RAW    Partition     99 GB  Healthy
    

    Le volume 2 (99 Go) est votre volume de données. Il est répertorié comme masqué, sans lettre de lecteur.

  7. Sélectionnez le volume :

    select volume 2
    
  8. Supprimez les attributs définis lorsque vous avez créé le volume à partir de l'instantané :

    attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    

    Cette commande rend le volume installable.

  9. Installez le volume en tant que lecteur D :

    assign letter=d
    
  10. Quittez l'outil DiskPart :

    exit
    

Réinitialiser la propriété et les autorisations d'un fichier

Étant donné que vous avez créé le disque de données en prenant un instantané sur l'instance sql-server-prod, les ID utilisateur relatifs à la propriété et aux autorisations des fichiers sont différents de ceux de l'instance sql-server-test. Vous devez modifier la propriété des fichiers pour l'attribuer à un utilisateur sur l'instance sql-server-test et mettre à jour les autorisations pour que les fichiers soient lisibles pour l'utilisateur local et l'utilisateur MSSQLSERVER.

  1. Dans la fenêtre du client RDP connecté à votre instance sql-server-test, cliquez sur le bouton Démarrer dans la barre des tâches Windows, puis saisissez cmd.
  2. Ouvrez l'application Invite de commandes en tant qu'administrateur.
  3. Définissez l'utilisateur du service MSSQLSERVER en tant que propriétaire des fichiers dans le dossier sql-server-data :

    icacls d:\sql-server-data /setowner "nt service\mssqlserver" /t
    
  4. Réinitialisez l'ensemble des autorisations sur tous les fichiers du dossier sql-server-data de premier niveau :

    icacls d:\sql-server-data /reset /t
    
  5. Mettez à jour les listes de contrôle d'accès (LCA) du dossier sql-server-data :

    icacls d:\sql-server-data /grant Administrators:(oi)(ci)f "nt service\mssqlserver":(oi)(ci)f "owner rights":(oi)(ci)f  %USERNAME%:(oi)(ci)f
    
  6. Désactivez l'héritage du dossier racine du lecteur, de sorte que seules les autorisations précédentes soient appliquées :

    icacls d:\sql-server-data /inheritancelevel:r
    
  7. Quittez l'application Invite de commandes :

    exit
    

L'instance SQL Server et l'utilisateur local de l'instance sql-server-test peuvent désormais accéder aux fichiers de la base de données.

Associer la base de données clonée

Vous devez maintenant associer la base de données clonée du lecteur D (data) à l'instance SQL Server de test. Vous pouvez associer la base de données de manière interactive à l'aide des assistants Microsoft SQL Server Management Studio ou directement en exécutant une commande Transact-SQL.

Assistant SSMS

  1. Dans la session RDP connectée à votre instance sql-server-test, cliquez sur le bouton Start (Démarrer) de la barre des tâches Windows, saisissez ssms, puis sélectionnez Microsoft SQL Server Management Studio (Exécuter en tant qu'administrateur).
  2. Cliquez sur Connect (Connecter) pour vous connecter au moteur de la base de données sql-server-test à l'aide de l'authentification Windows.
  3. Dans l'explorateur d'objets, faites un clic droit sur Databases (Bases de données), puis sélectionnez Attach (Associer).
  4. Dans l'assistant Attach databases (Associer des bases de données), cliquez sur Add (Ajouter).
  5. Accédez au répertoire D:\sql-server-data\wideworldimporters, cliquez sur le fichier WideWorldImporters.mdf, puis sur OK.
  6. Cliquez sur OK pour associer la base de données.

    Après quelques instants, votre base de données clonée est associée. Vous pouvez cliquer sur Refresh (Actualiser) dans l'explorateur d'objets pour voir si la base de données est répertoriée dans l'arborescence des bases de données.

Transact-SQL

  1. Dans une session RDP connectée à votre instance sql-server-test, cliquez sur le bouton Start (Démarrer) de la barre des tâches Windows, saisissez ssms, puis sélectionnez Microsoft SQL Server Management Studio (Exécuter en tant qu'administrateur).
  2. Cliquez sur Connect (Connecter) pour vous connecter au moteur de la base de données sql-server-prod à l'aide de l'authentification Windows.
  3. Sélectionnez File > New > Query with Current Connection (Fichier > Nouveau > Requête avec la connexion actuelle) pour ouvrir une nouvelle fenêtre de requête.
  4. Associez les données et les fichiers journaux dans le répertoire D:\sql-server-data\wideworldimporters :

    USE [master]
    GO
    
    CREATE DATABASE [WideWorldImporters] ON
    ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters.mdf' ),
    ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters.ldf' ),
    ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters_UserData.ndf' )
     FOR ATTACH
    GO
    
  5. Faites un clic droit sur le code de la requête, puis cliquez sur Execute (Exécuter).

    Après quelques instants, votre base de données clonée est associée. Vous pouvez cliquer sur Refresh (Actualiser) dans l'explorateur d'objets pour voir si la base de données est répertoriée dans l'arborescence des bases de données. Une fois la base de données associée, vous pouvez fermer la fenêtre de requête sans enregistrer.

Pour vérifier que l'exemple de base de données fonctionne, vous pouvez exécuter une requête.

  1. Dans SQL Server Management Studio, sélectionnez File > New > Query with Current Connection (Fichier > Nouveau > Requête avec la connexion actuelle) pour ouvrir une nouvelle fenêtre de requête, puis copiez le code suivant :

    SELECT top(100)
      i.InvoiceDate, i.InvoiceID, i.CustomerID, c.CustomerName,
      i.ConfirmedDeliveryTime, i.ConfirmedReceivedBy
    FROM
      WideWorldImporters.Sales.Invoices i
      JOIN WideWorldImporters.Sales.Customers c
      ON i.CustomerID=c.CustomerID
    WHERE i.ConfirmedDeliveryTime IS NOT NULL
    ORDER BY i.InvoiceDate desc;
    

    Cette requête extrait les informations récapitulatives des 100 dernières factures envoyées.

  2. Pour exécuter la requête, faites un clic droit sur la fenêtre de requête, puis sélectionnez Execute (Exécuter).

    Le volet Results (Résultats) affiche les informations récapitulatives.

    Capture d'écran montrant le volet Results (Résultats) d'une requête à l'exemple de base de données.

Maintenant que vous savez comment cloner une base de données à l'aide d'instantanés de disque persistant, vous pouvez essayer de cloner une base de données en utilisant la sauvegarde et la restauration. Pour terminer le tutoriel de cette deuxième approche, vous devez supprimer la base de données que vous avez clonée de l'instance sql-server-test.

Supprimer la base de données clonée

Pour supprimer la base de données clonée que vous avez créée à l'aide d'instantanés de disque, procédez comme suit :

Assistant SSMS

  1. Dans la session RDP connectée à votre instance sql-server-test, ouvrez Microsoft SQL Server Management Studio, puis connectez-vous au moteur de la base de données sql-server-test.
  2. Dans l'explorateur d'objets, développez Databases (Bases de données), faites un clic droit sur la base de données WorldWideImporters, puis sélectionnez Delete (Supprimer).
  3. Dans l'assistant Delete Object (Supprimer l'objet), assurez-vous que la case Close existing connections (Fermer les connexions existantes) est cochée.
  4. Cliquez sur OK.

Transact-SQL

  1. Dans la session RDP connectée à votre instance sql-server-test, ouvrez Microsoft SQL Server Management Studio, puis connectez-vous au moteur de la base de données sql-server-test.
  2. Pour fermer toutes les connexions à la base de données WideWorldImporters et la supprimer, copiez le script suivant dans une nouvelle fenêtre de requête, faites un clic droit sur le code, puis cliquez sur Execute (Exécuter) :

    USE [master]
    GO
    ALTER DATABASE [WideWorldImporters] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    GO
    DROP DATABASE [WideWorldImporters]
    GO
    

    Une fois la base de données supprimée, vous pouvez fermer la fenêtre de requête sans l'enregistrer. Vous pouvez cliquer sur Refresh (Actualiser) dans l'explorateur d'objets pour confirmer la suppression de la base de données.

Cloner à l'aide de la sauvegarde et de la restauration

Une deuxième méthode pour cloner une base de données SQL Server exécutée sur Compute Engine consiste à utiliser la sauvegarde et la restauration SQL Server natives. Avec cette approche, vous transférez la sauvegarde à l'aide de Cloud Storage.

Cette section du tutoriel utilise les ressources que vous avez créées dans la section Cloner la base de données à l'aide d'instantanés de disque Compute Engine. Si vous n'avez pas terminé cette section, vous devez le faire avant de continuer.

Dans cette section du tutoriel, vous allez :

  • Créer un bucket Cloud Storage
  • Sauvegarder la base de données sur le serveur de production :
  • Copier le fichier de sauvegarde du serveur de production sur Cloud Storage.
  • Copier le fichier de sauvegarde de Cloud Storage sur le serveur de test.
  • Restaurer la sauvegarde sur l'instance de test.

Le schéma suivant montre comment cloner une base de données en transférant une sauvegarde à l'aide de Cloud Storage.

Schéma illustrant la configuration du clonage d'une base de données SQL Server à l'aide de Cloud Storage.

Comme les systèmes externes à Google Cloud peuvent avoir accès à Cloud Storage, vous pouvez utiliser cette approche pour cloner des bases de données à partir d'instances SQL Server externes.

Créer un bucket Cloud Storage

Vous devez créer un bucket Cloud Storage qui stocke les fichiers de sauvegarde pendant que vous les transférez de l'instance sql-server-prod vers l'instance sql-server-test.

Console

  1. Dans la console Google Cloud, accédez à la page du Navigateur Cloud Storage.

    Accéder à la page du navigateur Cloud Storage

  2. Cliquez sur Créer un bucket.

  3. Nommez le bucket project-name-bucket.

    Remplacez l'élément suivant :

    • project-name : l'ID de votre projet Google Cloud.
  4. Développez Choisir une classe de stockage par défaut, puis sélectionnez Régional.

  5. Pour l'Emplacement, sélectionnez us-east1.

  6. Cliquez sur Créer.

Cloud Shell

  1. Ouvrez Cloud Shell.

    Ouvrir Cloud Shell

  2. Créez un bucket Cloud Storage dans la même région que vos instances de VM :

    gsutil mb -l "${REGION}" "gs://$(gcloud config get-value project)-bucket"
    

Effectuer une sauvegarde complète de la base de données à un moment précis

Dans votre environnement de production, vous pouvez peut-être déjà effectuer des sauvegardes. Vous pouvez utiliser ces sauvegardes comme base pour cloner votre base de données. Dans ce tutoriel, vous allez effectuer une sauvegarde en copie seule afin qu'elle n'ait aucune incidence sur les programmations de sauvegarde complètes ou incrémentielles existantes.

Assistant SSMS

  1. Dans la session RDP connectée à votre instance sql-server-prod, ouvrez Microsoft SQL Server Management Studio, puis connectez-vous au moteur de la base de données sql-server-prod.
  2. Dans l'explorateur d'objets, développez Databases (Bases de données), faites un clic droit sur la base de données WorldWideImporters, puis sélectionnez Tasks > Back Up (Tâches > Sauvegarder).
  3. Dans l'assistant Back Up Database (Sauvegarder la base de données), assurez-vous que les valeurs suivantes sont définies :
    • Backup type (Type de sauvegarde) est défini sur Full (Complète).
    • L'option Copy-only backup (Sauvegarde en copie seule) est sélectionnée.
    • Back up to (Sauvegarder sur) est défini sur Disk (Disque).
  4. Pour ajouter un fichier de sauvegarde, cliquez sur Add (Ajouter).
  5. Dans le champ Destination, saisissez D:\sql-server-data\WideWorldImporters-copy.bak.

    Capture d'écran montrant la boîte de dialogue "Back Up Database" (Sauvegarder la base de données).

  6. Sélectionnez la page Media Options (Options de supports), puis Overwrite all existing backup sets (Remplacer tous les ensembles de sauvegarde existants).

  7. Sélectionnez la page Backup Options (Options de sauvegarde), puis définissez Set backup compression (Définir la compression de sauvegarde) sur Compress backup (Compresser la sauvegarde).

  8. Pour créer la sauvegarde, cliquez sur OK.

    La sauvegarde prend quelques minutes.

Transact-SQL

  1. Dans la session RDP connectée à votre instance sql-server-prod, ouvrez Microsoft SQL Server Management Studio, puis connectez-vous au moteur de la base de données sql-server-prod.
  2. Pour effectuer une sauvegarde compressée en copie seule de la base de données WideWorldImporters dans le fichier d:\sql-server-data\WideWorldImporters-copy.bak, copiez le script suivant dans une nouvelle fenêtre de requête, faites un clic droit sur le code, puis cliquez sur Execute. (Exécuter).

    BACKUP DATABASE [WideWorldImporters]
       TO  DISK = N'd:\sql-server-data\WideWorldImporters-copy.bak'
       WITH  COPY_ONLY, NOFORMAT, INIT,
       NAME = N'WideWorldImporters-Full Database Backup',
       SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10
    GO
    

    Attendez quelques minutes que le serveur crée la sauvegarde. Une fois la sauvegarde de la base de données terminée, vous pouvez fermer la fenêtre de requête sans enregistrer.

Copier le fichier de sauvegarde dans Cloud Storage

  1. Dans la session RDP connectée à votre instance sql-server-prod, ouvrez une fenêtre Windows PowerShell.
  2. Copiez le fichier de sauvegarde dans le bucket Cloud Storage que vous avez créé précédemment :

    gsutil cp -n d:\sql-server-data\WideWorldImporters-copy.bak "gs://$(gcloud config get-value project)-bucket/"
    
  3. Quittez PowerShell.

    exit
    

Copier le fichier de sauvegarde depuis Cloud Storage vers sql-server-test

  1. Dans la session RDP connectée à votre instance sql-server-test, ouvrez une fenêtre Windows PowerShell.
  2. Copiez le fichier de sauvegarde dans le bucket Cloud Storage que vous avez créé précédemment :

    gsutil cp "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" d:\sql-server-data\
    
  3. Quittez PowerShell.

    exit
    

Votre instance de test dispose désormais de la sauvegarde complète de votre base de données sur son disque local.

Restaurer la sauvegarde

Vous pouvez maintenant restaurer la sauvegarde complète sur le lecteur D (data) de l'instance sql-server-test.

Assistant SSMS

  1. Dans la session RDP connectée à votre instance sql-server-test, ouvrez Microsoft SQL Server Management Studio, puis connectez-vous au moteur de la base de données sql-server-test.
  2. Dans l'explorateur d'objets, faites un clic droit sur Databases (Bases de données), puis sélectionnez Restore Database (Restaurer la base de données).
  3. Dans Source, sélectionnez Device (Appareil), puis cliquez sur le bouton [...] à côté du nom de l'appareil.
  4. Dans la boîte de dialogue Select backup devices (Sélectionner des appareils de sauvegarde), sélectionnez File (Fichier) dans la liste Backup media type (Type de support de sauvegarde), puis cliquez sur Add (Ajouter).
  5. Dans le sélecteur de fichiers, accédez à D:\sql-server-data, cliquez sur le fichier WideWorldImporters-copy.bak, puis sur OK.
  6. Cliquez sur OK pour fermer la boîte de dialogue Select backup devices (Sélectionner des appareils de sauvegarde).

    La boîte de dialogue Restore Database (Restaurer la base de données) contient désormais des données concernant la sauvegarde de la base de données WideWorldImporters.

  7. Dans Select a page (Sélectionner une page), cliquez sur Files (Fichiers).

  8. Cochez la case Relocate all files to folder (Déplacer tous les fichiers dans le dossier).

  9. Dans les champs Data file folder (Dossier de fichiers de données) et Log file folder (Dossier de fichiers journaux), saisissez D:\sql-server-data\wideworldimporters.

    Capture d'écran montrant la boîte de dialogue Restore Database (Restaurer la base de données).

  10. Pour lancer l'opération de restauration, cliquez sur OK.

    Une fois le processus terminé, le message Database 'WideWorldImporters' restored successfully s'affiche.

Transact-SQL

  1. Dans la session RDP connectée à votre instance sql-server-test, ouvrez Microsoft SQL Server Management Studio, puis connectez-vous au moteur de la base de données sql-server-test.
  2. Sélectionnez File > New > Query with Current Connection (Fichier > Nouveau > Requête avec la connexion actuelle) pour ouvrir une nouvelle fenêtre de requête.
  3. Copiez la commande T-SQL suivante pour lancer une restauration à partir du fichier de sauvegarde que vous avez copié depuis Cloud Storage, en restaurant la base de données et le fichier journal dans le répertoire D:\sql-server-data\wideworldimporters :

    USE [master]
    GO
    
    RESTORE DATABASE [WideWorldImporters]
      FROM  DISK = N'D:\SQL-SERVER-DATA\WideWorldImporters-copy.bak'
      WITH  FILE = 1,
      MOVE N'WWI_Primary' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.mdf',
      MOVE N'WWI_UserData' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_UserData.ndf',
      MOVE N'WWI_Log' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.ldf',
      MOVE N'WWI_InMemory_Data_1' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_InMemory_Data_1',
      NOUNLOAD,
      STATS = 5
    GO
    
  4. Faites un clic droit sur le code, puis cliquez sur Execute (Exécuter).

    Après quelques minutes, la restauration de la base de données est terminée. Vous pouvez cliquer sur Refresh (Actualiser) dans l'explorateur d'objets pour voir si la base de données est répertoriée dans l'arborescence des bases de données. Une fois la restauration de la base de données terminée, vous pouvez fermer la fenêtre de requête sans enregistrer.

Pour vérifier que la base de données fonctionne, vous pouvez exécuter une requête.

  1. Dans Microsoft SQL Server Management Studio, sélectionnez File > New > Query with Current Connection (Fichier > Nouveau > Requête avec la connexion actuelle) pour ouvrir une nouvelle fenêtre de requête, puis copiez le code suivant :

    SELECT top(100)
      i.InvoiceDate, i.InvoiceID, i.CustomerID, c.CustomerName,
      i.ConfirmedDeliveryTime, i.ConfirmedReceivedBy
    FROM
      WideWorldImporters.Sales.Invoices i
      JOIN WideWorldImporters.Sales.Customers c
      ON i.CustomerID=c.CustomerID
    WHERE i.ConfirmedDeliveryTime IS NOT NULL
    ORDER BY i.InvoiceDate desc;
    

    Cette requête extrait les informations récapitulatives des 100 dernières factures envoyées.

  2. Faites un clic droit sur la fenêtre de requête, puis cliquez sur Execute (Exécuter).

    Le volet Results (Résultats) affiche les informations récapitulatives.

    Capture d'écran montrant le volet Results (Résultats) d'une requête à l'exemple de base de données.

Utiliser Cloud SQL comme destination de clonage

Si votre base de données de destination est hébergée sur Cloud SQL et que la base de données d'origine se trouve sur Compute Engine, le seul mécanisme compatible pour le clonage consiste à sauvegarder la base de données sur Cloud Storage, puis à la restaurer dans Cloud SQL.

Pour ce tutoriel, vous allez réutiliser la sauvegarde que vous avez créée dans la section précédente.

Créez une instance Cloud SQL pour SQL Server

  1. Ouvrez Cloud Shell.

    Ouvrir Cloud Shell

  2. Créez une instance Cloud SQL pour SQL Server exécutant la même version de base de données que votre instance sql-server-prod :

    gcloud sql instances create sqlserver-cloudsql  \
      --database-version=SQLSERVER_2022_STANDARD \
      --cpu=2 \
      --memory=5GB \
      --root-password=sqlserver12@ \
      --region=${REGION}
    

    Cela crée une instance avec l'utilisateur racine de sqlserver et le mot de passe sqlserver12@.

Mettre à jour les autorisations des objets

Vous devez définir les autorisations appropriées à la fois sur le bucket Cloud Storage et sur l'objet de sauvegarde pour que le compte de service Cloud SQL puisse les lire. Ces autorisations sont définies automatiquement lorsque vous utilisez la console Google Cloud pour importer l'objet. Vous pouvez également les définir à l'aide des commandes gcloud.

  1. Ouvrez Cloud Shell.

    Ouvrir Cloud Shell

  2. Définissez une variable d'environnement contenant l'adresse du compte de service de votre instance Cloud SQL :

    CLOUDSQL_SA="$(gcloud sql instances describe sqlserver-cloudsql --format='get(serviceAccountEmailAddress)')"
    
  3. Ajoutez le compte de service à la liste de contrôle d'accès du bucket avec l'autorisation "writer" (rédacteur) et à l'objet d'exportation avec l'autorisation "reader" (lecteur) :

    gsutil acl ch -u "${CLOUDSQL_SA}":W "gs://$(gcloud config get-value project)-bucket/"
    gsutil acl ch -u "${CLOUDSQL_SA}":R \
        "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak"
    

Importer la base de données exportée

  1. Ouvrez Cloud Shell.

    Ouvrir Cloud Shell

  2. Importez le fichier exporté dans votre instance Cloud SQL :

    gcloud sql import bak sqlserver-cloudsql \
        "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" \
        --database WideWorldImporters
    

    Lorsque vous y êtes invité, saisissez y.

  3. Installez le package d'outils SQL Server :

    sudo apt install -y mssql-tools
    

    Si vous acceptez les termes de la licence, saisissez yes lorsque vous y êtes invité.

    Ces outils vous permettent de vous connecter à Cloud SQL à partir de Cloud Shell afin de pouvoir exécuter des requêtes sur l'instance Cloud SQL.

  4. Connectez le proxy Cloud SQL à votre instance SQL Server :

    CONNECTION_NAME=$(gcloud sql instances describe sqlserver-cloudsql --format='value(connectionName)')
    cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
    
  5. Pour vérifier que la base de données clonée fonctionne, exécutez une requête :

    /opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q \
      'SELECT top(100)
        i.InvoiceDate, i.InvoiceID, i.CustomerID, LEFT(c.CustomerName,20) CustomerName,
        i.ConfirmedDeliveryTime, LEFT(i.ConfirmedReceivedBy,20) ConfirmedReceivedBy
      FROM
        WideWorldImporters.Sales.Invoices i
        JOIN WideWorldImporters.Sales.Customers c
        ON i.CustomerID=c.CustomerID
      WHERE i.ConfirmedDeliveryTime IS NOT NULL
      ORDER BY i.InvoiceDate desc;'
    

    Lorsque vous y êtes invité, saisissez le mot de passe de l'utilisateur sqlserver du serveur de base de données sqlserver-cloudsql (sqlserver12@).

    Cette requête extrait les informations récapitulatives des 100 dernières factures envoyées.

    Le résultat est le suivant :

    InvoiceDate      InvoiceID   CustomerID  CustomerName         ConfirmedDeliveryTime                  ConfirmedReceivedBy
    ---------------- ----------- ----------- -------------------- -------------------------------------- --------------------
          2016-05-30       70349         581 Wingtip Toys (Munich            2016-05-31 07:05:00.0000000 Youssef Eriksson
          2016-05-30       70350         123 Tailspin Toys (Roe P            2016-05-31 07:10:00.0000000 Ella Zvirbule
          2016-05-30       70351         175 Tailspin Toys (San A            2016-05-31 07:15:00.0000000 Julio Correa
          2016-05-30       70352        1029 Veronika Necesana               2016-05-31 07:20:00.0000000 Veronika Necesana
          2016-05-30       70353        1014 Narendra Tickoo                 2016-05-31 07:25:00.0000000 Narendra Tickoo
          2016-05-30       70354         930 Shantanu Huq                    2016-05-31 07:30:00.0000000 Shantanu Huq
          2016-05-30       70355         963 Be Trang                        2016-05-31 07:35:00.0000000 Be Trang
          2016-05-30       70356         567 Wingtip Toys (Jerome            2016-05-31 07:40:00.0000000 Severins Polis
          2016-05-30       70357         510 Wingtip Toys (Grabil            2016-05-31 07:45:00.0000000 Manish Ghosh
    ...
    

Nettoyer

Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud, vous pouvez supprimer le projet Google Cloud que vous avez créé pour ce tutoriel.

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étape suivante