Övning – Distribuera och konfigurera Azure SQL Database

Slutförd

Azure SQL Database är ett bra val för drifts-, transaktions- och hybridanalysarbetsbelastningar.

I bussfångstscenariot valde vi Azure SQL Database eftersom det är en företagsdatabas med moderna funktioner, till exempel JSON och geospatialt stöd.

Här distribuerar du Azure SQL Database med hjälp av skript, ansluter till den i Azure Data Studio och konfigurerar databasen för scenariot med hjälp av T-SQL. Du kommer sedan att utforska JSON och geospatial support när det gäller att fånga bussen.

Distribuera Azure SQL Database med PowerShell

För att kunna konfigurera databasen för bussfångstscenariot måste du först distribuera en databas att arbeta med. För att göra detta använder du Azure Cloud Shell. Cloud Shell är också tillgängligt via Azure-portalen och gör att du kan skapa och hantera Azure-resurser. Den levereras förinstallerad med olika verktyg, inklusive Azure CLI, Azure PowerShell och sqlcmd. I den här övningen använder du Azure PowerShell, men du kan utföra samma uppgifter med Azure CLI. I skriptet uppmanas du att ange ett lösenord för den nya databasen och din lokala IP-adress så att din enhet kan ansluta till databasen.

De här skripten bör ta tre till fem minuter att slutföra. Kom ihåg att anteckna lösenordet, det unika ID:t och regionen eftersom de inte visas igen.

Dricks

Du kan använda CTRL + Skift + V för att klistra in kommandon i Cloud Shell. CTRL + V fungerar inte.

  1. Börja med att hämta din lokala offentliga IP-adress. Kontrollera att du inte är ansluten till någon VPN-tjänst, och öppna en lokal PowerShell-terminal på enheten. Kör följande kommando, och anteckna IP-adressen från resultatet.

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

    Dricks

    Om du inte är på en Windows-enhet måste du hitta din IP-adress med en annan metod. I terminalen kan du köra curl ifconfig.co.

  2. Kör följande kommandon i Cloud Shell. Ange ett komplext lösenord och ange i prompten din lokala offentliga IP-adress, som du fick i föregående steg.

    Kommentar

    Ett komplext lösenord måste bestå av:

    • Minst 8 tecken och högst 16 tecken
    • Kräver 3 av 4 av följande:
      • Gemener
      • Versaler
      • Tal ( 0-9 )
      • Symboler ( @ # $ % ^ & * - _  + = [ ] { } | \ : ' , . ? / ' ~ " ( ) ; )
    # 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. Mata ut och lagra (i en textfil) den information du behöver senare i modulen genom att köra följande kod i Azure Cloud Shell. Du måste förmodligen trycka på Retur när du har klistrat in koden, eftersom den sista raden inte körs som standard.

    # 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
    

    Kom ihåg att anteckna lösenordet, det unika ID:t och regionen. Du kommer att använda dem i resten av modulen.

  4. Kör följande skript för att distribuera en tom Azure SQL Database-instans och logisk server. Skriptet lägger också till din IP-adress som en brandväggsregel så att du kan komma åt databasen.

    # 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."
    

    Skriptet kommer att ta flera minuter att slutföra. Det finns fyra huvudkommandon i föregående block. Låt oss dela upp dem. Det första kommandot skapar en logisk Azure SQL Database-server som fungerar som den instans som ska anslutas till och som ett sätt att gruppera metadata och principinställningar för alla databaser som har tilldelats den servern. De följande två kommandona skapar två brandväggsregler: en för att tillåta din IP-adress att ansluta och en för att tillåta att andra Azure-tjänster ansluter. Den här inställningen är särskilt användbar när du konfigurerar CI/CD-pipelines med Hjälp av Azure DevOps och/eller GitHub Actions.

    Det sista kommandot distribuerar en databas till den logiska servern. Från kommandona kan du se att databasen finns på tjänstnivån Generell användning med fyra virtuella kärnor och på den serverlösa beräkningsnivån med ett intervall med virtuella kärnor mellan 0,5 och 4. Den serverlösa beräkningsnivån är avsedd för tillfällig, oförutsägbar användning med lägre genomsnittlig beräkningsanvändning över tid. Den serverlösa beräkningsnivån ger automatisk beräkningsskalning för att förenkla prestandahanteringen och debiteras endast för den mängd beräkning som används. Den serverlösa beräkningsnivån har också stöd för automatisk pausning och återupptagning för att hjälpa till med ytterligare prisoptimering. När databasen har pausats betalar du endast för lagring. Den serverlösa beräkningsnivån är en bra lösning för busfångstscenariot eftersom den är i utvecklingsfasen (används inte dygnet innan) och det är okänt hur populärt det blir när du startar (hur mycket beräkning det behöver).

    Om du har problem eller vill bekräfta att resurserna har distribuerats kan du granska i Azure-portalen.

Anslut till Azure SQL Database med Azure Data Studio

När databasen har distribuerats finns det många sätt att ansluta och interagera med den: sqlcmd, Azure Data Studio, SSMS, frågeredigeraren i portalen osv. Här får du lära dig hur du ansluter till databasen med Hjälp av Azure Data Studio.

Kommentar

Beroende på din lokala konfiguration (till exempel om du använder ett VPN) kan Azure Data Studio uppmana dig att lägga till din IP-adress i serverbrandväggen. Du kan lägga till din IP-adress i serverbrandväggen i Azure-portalen genom att följa stegen i den här artikeln.

  1. Öppna Azure Data Studio och bekräfta att kodlagringsplatsens mapp är öppen genom att välja ikonen Utforskaren i aktivitetsfältet. Om du inte ser kodfilerna går du tillbaka till föregående övning för att konfigurera din miljö.

  2. Välj Anslut ions i aktivitetsfältet. Alla dina databasanslutningar kan skapas och lagras här.

  3. Bredvid Servrar väljer du knappen Ny Anslut ion (det ser ut som en server med ett plustecken).

  4. Fyll i följande information i fönstret Anslut ionsinformation som öppnas:
    Anslut ionstyp: Microsoft SQL Server
    Server: bus-server[uniqueID].database.windows.net
    Autentiseringstyp: SQL-inloggning
    Användarnamn: cloudadmin
    Lösenord: ditt lösenord
    Kom ihåg lösenord: Kryssruta
    Databas: bus-db
    Servergrupp: Standard
    Namn (valfritt): lämna tomt

  5. Välj Anslut.

  6. När en lyckad anslutning har upprättats bör du kunna navigera i databasens innehåll i fönstret Anslut ions.

Konfigurera databasens schema med T-SQL

När du är ansluten till en databas behöver du vanligtvis distribuera databasschemat och skräddarsy databasen så att den uppfyller ditt scenarios krav genom att skapa tabeller. Med hjälp av en serie T-SQL-skript i en SQL-notebook-fil i Azure Data Studio konfigurerar du databasen så att den stöder ditt program och läser in inledande bussrelaterade data.

  1. I Azure Data Studio väljer du explorer-ikonen i aktivitetsfältet.

  2. Öppna under mappen database\notebooks01-set-up-database.ipynb.

  3. Följ stegen i SQL Notebook för att slutföra övningen och gå sedan tillbaka hit.

Bearbeta bussdata med Azure SQL Database

Nu när databasen har konfigurerats är det dags att gå djupare in på hur Azure SQL Database tar emot JSON-data i realtid och lagrar dem i databasen. Som tur är har Azure SQL Database JSON-stöd så det är enkelt att hantera. Sedan kan du använda geospatiala funktioner i Azure SQL Database för att hitta avstånden mellan bussar, definiera och lagra geofences och även avgöra om en buss ligger inom en viss geofence. Med en grund som den här blir din programutveckling avsevärt förenklad. Den här övningen kommer att slutföras i en SQL-notebook-fil i Azure Data Studio, ungefär som föregående aktivitet.

  1. I Azure Data Studio väljer du explorer-ikonen i aktivitetsfältet.

  2. Öppna under mappen database\notebooks02-json-geospatial-sql-db.ipynb.

  3. Följ stegen i SQL Notebook för att slutföra övningen och gå sedan tillbaka hit.