Övning – Distribuera och konfigurera Azure SQL Database

Slutförd

Azure SQL Database är ett bra alternativ för arbetsbelastningar med drift, transaktioner och hybridanalys.

I scenariot med bussfångare valdes Azure SQL Database eftersom det var en företagsdatabas med moderna funktioner som 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 ställer in databasen för scenariot med hjälp av T-SQL. Du kommer sedan att utforska JSON och geospatialt stöd som relaterar till att fånga buss.

Distribuera Azure SQL Database med PowerShell

För att kunna konfigurera databasen för bussfångsscenariot måste du först distribuera en databas att arbeta med. För att göra det här använder du Azure Cloud Shell, som finns till höger på den här sidan. Cloud Shell är också tillgängligt via Azure Portal och 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.

  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
    

    Tips

    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. I prompten anger du din lokala offentliga IP-adress, som du fick i föregående steg.

    # 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 behöver 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 ovan, vi ska dela upp dem. Den första skapar Azure SQL Database logisk server, som fungerar som något att ansluta till samt ett sätt att gruppera metadata och principinställningar för alla databaser som är tilldelade till den servern. Följande två kommandon skapar två brandväggsregler: en för att tillåta att din IP-adress ansluter och ett för att tillåta andra Azure-tjänster att ansluta. Den här inställningen är särskilt användbar när du ställer in 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 är en Generell användning serverlös databas med ett intervall med virtuella kärnor mellan 0,5 och 4. Serverlös är avsedd för tillfällig, oförutsägbar användning med lägre genomsnittlig beräkningsanvändning över tid. Serverlös skalning ger automatisk beräkningsskalning för att förenkla prestandahanteringen och debiteras endast för den mängd beräkning som används. Serverlös stöder också automatisk pausning och återupptagande för att hjälpa till att ytterligare prisoptimera. När databasen har pausats betalar du endast för lagring. Serverlös är en bra lösning för bussfångsningsscenariot eftersom det är i utvecklingsfasen (används inte 24/7) och det är okänt hur populärt det är när du startar (hur mycket beräkning det kommer att behöva).

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

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.

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

  2. Välj Anslutningar i det vänstra aktivitetsfältet. Alla dina databasanslutningar kan skapas och lagras här.

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

  4. I fönstret Anslutningsinformation som öppnas fyller du i följande information:
    Anslutningstyp: 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. När en lyckad anslutning har gjorts bör du kunna navigera i databasens innehåll i fönstret Anslutningar.

Konfigurera databasens schema med T-SQL

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

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

  2. Under mappen database\notebooks öppnar du 01-set-up-database.ipynb .

  3. Följ stegen i anteckningsboken SQL för att slutföra övningen och kom sedan tillbaka hit.

Bearbeta bussdata med Azure SQL Database

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

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

  2. Under mappen database\notebooks öppnar du 02-json-geospatial-sql-db.ipynb .

  3. Följ stegen i anteckningsboken SQL för att slutföra övningen och kom sedan tillbaka hit.