Exercice - Déployer et configurer Azure SQL Database

Effectué

Azure SQL Database constitue un excellent choix pour les charges de travail analytiques opérationnelles, transactionnelles et hybrides.

Dans le scénario de localisation de bus, nous avons sélectionné Azure SQL Database car il s’agit d’un service de base de données d’entreprise doté de fonctionnalités modernes comme la prise en charge des données JSON et géospatiales.

Ici, vous allez déployer Azure SQL Database au moyen de scripts, vous y connecter dans Azure Data Studio et configurer la base de données pour le scénario avec T-SQL. Vous explorerez ensuite la prise en charge des données JSON et géospatiales dans le cadre du scénario de localisation de bus.

Déployer Azure SQL Database avec PowerShell

Pour configurer la base de données du scénario de localisation de bus, vous devez d’abord déployer la base de données. Pour ce faire, vous allez utiliser Azure Cloud Shell. Cloud Shell est également disponible via le portail Azure. Il vous permet de créer et de gérer des ressources Azure. Il est préinstallé avec différents outils, notamment Azure CLI, Azure PowerShell et sqlcmd. Dans cet exercice, vous allez utiliser Azure PowerShell, mais vous pouvez accomplir les mêmes tâches avec Azure CLI. Dans le script, vous êtes invité à entrer un mot de passe pour la nouvelle base de données et votre adresse IP locale pour permettre à votre appareil de se connecter à la base de données.

L’exécution de ces scripts prend trois à cinq minutes. Veillez à noter votre mot de passe, votre ID unique et votre région, car ils ne seront plus affichés après cela.

Conseil

Vous pouvez utiliser Control + Maj + V pour coller des commandes dans Cloud Shell. Control + V ne fonctionnera pas.

  1. Commencez par obtenir votre adresse IP publique locale. Vérifiez que vous êtes déconnecté de tout service VPN, puis ouvrez un terminal PowerShell local sur votre appareil. Exécutez la commande suivante et notez l’adresse IP qui s’affiche.

    (Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content
    

    Conseil

    Si vous n’utilisez pas d’appareil Windows, vous devez localiser votre adresse IP à l’aide d’une autre méthode. Dans votre terminal, vous pouvez exécuter curl ifconfig.co.

  2. Exécutez les commandes suivantes dans Cloud Shell. Entrez un mot de passe complexe et, à l’invite, entrez votre adresse IP publique locale, que vous avez obtenue à l’étape précédente.

    Notes

    Un mot de passe complexe doit se composer de :

    • 8 caractères au minimum et 16 caractères au maximum
    • Nécessite 3 des 4 éléments suivants :
      • Caractères minuscules
      • Caractères majuscules
      • Chiffres (0-9)
      • Symboles ( @ # $ % ^ & * - _  + = [ ] { } | \ : ‘ , . ? / ` ~ “ ( ) ; )
    # Collect password 
    $adminSqlLogin = "cloudadmin"
    $password = Read-Host "Your username is 'cloudadmin'. Please enter a password for your Azure SQL Database server that meets the password requirements"
    # Prompt for local ip address
    $ipAddress = Read-Host "Disconnect your VPN, open PowerShell on your machine and run '(Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content'. Please enter the value (include periods) next to 'Address': "
    Write-Host "Password and IP Address stored"
    
  3. Stockez dans un fichier texte les informations dont vous aurez besoin tout au long du module en exécutant le code suivant dans Cloud Shell. Vous devrez probablement appuyer sur Entrée après avoir collé le code, car la dernière ligne ne sera pas exécutée par défaut.

    # Get resource group and location and random string
    $resourceGroupName = "<rgn>[sandbox resource group name]</rgn>"
    $resourceGroup = Get-AzResourceGroup | Where ResourceGroupName -like $resourceGroupName
    $uniqueID = Get-Random -Minimum 100000 -Maximum 1000000
    $location = $resourceGroup.Location
    # The logical server name has to be unique in the system
    $serverName = "bus-server$($uniqueID)"
    # The sample database name
    $databaseName = "bus-db"    
    Write-Host "Please note your unique ID for future exercises in this module:"  
    Write-Host $uniqueID
    Write-Host "Your resource group name is:"
    Write-Host $resourceGroupName
    Write-Host "Your resources were deployed in the following region:"
    Write-Host $location
    Write-Host "Your server name is:"
    Write-Host $serverName
    

    N’oubliez pas de noter votre mot de passe, votre ID unique et votre région. Vous les utiliserez tout au long du module.

  4. Exécutez le script suivant pour déployer une instance d’Azure SQL Database vide et un serveur logique. Le script ajoute également votre adresse IP en tant que règle de pare-feu pour vous permettre d’accéder à la base de données.

    # Create a new server with a system wide unique server name
    $server = New-AzSqlServer -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -Location $location `
        -SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
    # Create a server firewall rule that allows access from the specified IP range and all Azure services
    $serverFirewallRule = New-AzSqlServerFirewallRule `
        -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -FirewallRuleName "AllowedIPs" `
        -StartIpAddress $ipAddress -EndIpAddress $ipAddress 
    $allowAzureIpsRule = New-AzSqlServerFirewallRule `
        -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -AllowAllAzureIPs
    # Create a database
    $database = New-AzSqlDatabase  -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -DatabaseName $databaseName `
        -Edition "GeneralPurpose" -Vcore 4 -ComputeGeneration "Gen5" `
        -ComputeModel Serverless -MinimumCapacity 0.5
    Write-Host "Database deployed."
    

    Cette opération peut prendre plusieurs minutes. Détaillons les quatre commandes principales figurant dans le bloc de code précédent. La première commande crée un serveur logique Azure SQL Database qui sert d’instance de connexion et qui permet de regrouper les métadonnées et les paramètres de stratégie pour toutes les bases de données affectées à ce serveur. Les deux commandes suivantes créent deux règles de pare-feu : une pour permettre à votre adresse IP de se connecter et une autre pour permettre à d’autres services Azure de se connecter. Ce paramètre est particulièrement utile quand vous configurez des pipelines CI/CD avec Azure DevOps et/ou GitHub Actions.

    La commande finale déploie une base de données dans ce serveur logique. À partir des commandes, vous pouvez indiquer que la base de données se trouve dans le niveau de service Usage général avec quatre vCores et dans le niveau de calcul serverless avec une plage de cœurs virtuels compris entre 0,5 et 4. Le niveau de calcul serverless est destiné à une utilisation intermittente et imprévisible avec une utilisation moyenne du calcul moins élevée dans le temps. Le niveau de calcul serverless fournit une mise à l’échelle automatique des calculs pour simplifier la gestion des performances et est facturé uniquement pour la quantité de calcul utilisée. Le niveau de calcul serverless prend également en charge la mise en pause et la reprise automatiques pour optimiser encore plus le prix. Quand l’exécution de votre base de données est interrompue, vous payez uniquement pour le stockage. Le niveau de calcul serverless est une solution idéale pour le scénario de localisation de bus, celui-ci étant en phase de développement (il n’est pas utilisé 24h/24, 7j/7) et sa popularité au moment du lancement (capacité de calcul nécessaire) étant inconnue.

    Si vous avez des problèmes ou si vous souhaitez confirmer que les ressources ont été déployées, vous pouvez consulter le portail Azure.

Se connecter à Azure SQL Database avec Azure Data Studio

Une fois votre base de données déployée, vous pouvez vous y connecter et interagir avec celle-ci de plusieurs façons : sqlcmd, Azure Data Studio, SSMS, éditeur de requête dans le portail, etc. Ici, vous allez apprendre à vous connecter à la base de données en utilisant Azure Data Studio.

Remarque

Selon votre configuration locale (par exemple, si vous êtes sur un VPN), Azure Data Studio peut vous inviter à ajouter votre adresse IP au pare-feu du serveur. Vous pouvez ajouter votre adresse IP au pare-feu du serveur sur le Portail Azure en suivant les étapes décrites dans cet article.

  1. Ouvrez Azure Data Studio et vérifiez que le dossier du référentiel de code est ouvert en sélectionnant l’icône Explorateur dans la Barre d’activité. Si vous ne voyez pas les fichiers de code, revenez à l’exercice précédent pour configurer votre environnement.

  2. Sélectionnez Connexions dans la Barre d’activité. Toutes vos connexions de base de données peuvent être créées et stockées ici.

  3. En regard de Serveurs, sélectionnez le bouton Nouvelle connexion (serveur avec un signe plus).

  4. Dans le volet Détails de la connexion qui s’ouvre, entrez les informations suivantes :
    Type de connexion : Microsoft SQL Server
    Serveur : bus-server[uniqueID].database.windows.net
    Type d’authentification : Connexion SQL
    Nom d’utilisateur : cloudadmin
    Mot de passe : votre mot de passe
    Mémoriser le mot de passe : cocher la case
    Base de données : bus-db
    Groupe de serveurs : par défaut
    Nom (facultatif) : laisser vide

  5. Sélectionnez Connecter.

  6. Une fois la connexion établie, vous devriez pouvoir accéder au contenu de la base de données dans le volet Connexions.

Configurer le schéma de la base de données avec T-SQL

Une fois connecté à une base de données, vous devez généralement déployer le schéma de la base de données et créer des tables pour adapter la base de données aux besoins de votre scénario. Au moyen d’une série de scripts T-SQL dans un notebook SQL dans Azure Data Studio, configurez la base de données pour prendre en charge votre application et chargez des données initiales liées aux bus.

  1. Dans Azure Data Studio, sélectionnez l’icône Explorateur dans la Barre d’activité.

  2. Sous le dossier database\notebooks, ouvrez 01-set-up-database.ipynb.

  3. Suivez les étapes du notebook SQL pour effectuer l’exercice, puis revenez ici.

Traiter les données des bus avec Azure SQL Database

Maintenant que votre base de données est configurée, il est temps d’examiner de plus près comment Azure SQL Database recevra les données JSON en temps réel et comment elles seront stockées dans la base de données. Heureusement, Azure SQL Database prend en charge JSON, ce qui facilite les choses. Vous pouvez ensuite utiliser les fonctionnalités géospatiales d’Azure SQL Database pour rechercher les distances entre les bus, définir et stocker des limites géographiques et même déterminer si un bus se trouve dans une limite géographique donnée. Avec une base comme celle-ci, le développement de votre application est considérablement simplifié. Comme pour l’activité précédente, vous allez effectuer cet exercice dans un notebook SQL dans Azure Data Studio.

  1. Dans Azure Data Studio, sélectionnez l’icône Explorateur dans la Barre d’activité.

  2. Sous le dossier database\notebooks, ouvrez 02-json-geospatial-sql-db.ipynb.

  3. Suivez les étapes du notebook SQL pour effectuer l’exercice, puis revenez ici.