Oefening: Azure SQL Database implementeren en configureren

Voltooid

Azure SQL Database is een uitstekende keuze voor operationele, transactionele en hybride analytische workloads.

In het busvangende scenario hebben we Azure SQL Database geselecteerd omdat het een bedrijfsdatabase is met moderne mogelijkheden, zoals JSON en georuimtelijke ondersteuning.

Hier implementeert u Azure SQL Database met behulp van scripts, maakt u er verbinding mee in Azure Data Studio en stelt u de database in voor het scenario met behulp van T-SQL. Vervolgens verkent u de JSON- en georuimtelijke ondersteuning met betrekking tot het vangen van de bus.

Azure SQL Database implementeren met behulp van PowerShell

Als u de database wilt instellen voor het busvangende scenario, moet u eerst een database implementeren om mee te werken. Hiervoor gebruikt u Azure Cloud Shell. Cloud Shell is ook beschikbaar via Azure Portal en biedt u de mogelijkheid om Azure-resources te maken en te beheren. Het wordt vooraf geïnstalleerd met verschillende hulpprogramma's, waaronder de Azure CLI, Azure PowerShell en sqlcmd. In deze oefening gebruikt u Azure PowerShell, maar u kunt dezelfde taken uitvoeren met de Azure CLI. In het script wordt u gevraagd om een wachtwoord voor de nieuwe database en uw lokale IP-adres om uw apparaat in staat te stellen verbinding te maken met de database.

Het voltooien van deze scripts duurt drie tot vijf minuten. Noteer uw wachtwoord, de unieke id en de regio, want deze worden hierna niet meer weergegeven.

Tip

U kunt Ctrl + Shift + V gebruiken om opdrachten in Cloud Shell te plakken. Ctrl + V werkt niet.

  1. Begin met het verkrijgen van uw lokale openbare IP-adres. Zorg ervoor dat u geen verbinding hebt met een VPN-service en open een lokale PowerShell-terminal op uw apparaat. Voer de volgende opdracht uit en noteer het resulterende IP-adres.

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

    Tip

    Als u geen Windows-apparaat gebruikt, moet u uw IP-adres zoeken met een andere methode. In uw terminal kunt u uitvoeren curl ifconfig.co.

  2. Voer de volgende opdrachten uit in Cloud Shell. Voer een complex wachtwoord in en voer bij de prompt uw lokale openbare IP-adres in dat u in de vorige stap hebt verkregen.

    Notitie

    Een complex wachtwoord moet bestaan uit:

    • Minimaal 8 tekens en maximaal 16 tekens
    • Vereist 3 van de 4 van de volgende opties:
      • Kleine letters
      • Hoofdletters
      • Getallen ( 0-9 )
      • Symbolen ( @ # $ % ^ & * - _  + = [ ] { } | \ : ' , . ? / ' ~ " ( ) ; )
    # 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. Genereer de gegevens die u nodig hebt in de module en sla deze op (in een tekstbestand of vergelijkbaar) door de volgende code in de Cloud Shell uit te voeren. U moet waarschijnlijk op Enter drukken nadat u de code hebt geplakt, omdat de laatste regel niet standaard wordt uitgevoerd.

    # 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
    

    Vergeet niet om uw wachtwoord, unieke id en regio te noteren. U hebt deze in de gehele module nodig.

  4. Voer het volgende script uit om een leeg Azure SQL Database-exemplaar en een logische server te implementeren. Het script voegt ook uw IP-adres toe als firewallregel, zodat u toegang hebt tot de database.

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

    Het uitvoeren van het script kan enkele minuten in beslag nemen. Er zijn vier hoofdopdrachten in het voorgaande blok; Laten we ze opsplitsen. Met de eerste opdracht maakt u een logische Azure SQL Database-server, die fungeert als het exemplaar om verbinding te maken met en als een manier voor het groeperen van metagegevens en beleidsinstellingen voor alle databases die aan die server zijn toegewezen. De volgende twee opdrachten maken twee firewallregels: een om uw IP-adres verbinding te laten maken en een om andere Azure-services verbinding te laten maken. Deze instelling is vooral handig wanneer u CI/CD-pijplijnen instelt met behulp van Azure DevOps en/of GitHub Actions.

    Met de laatste opdracht wordt een database op die logische server geïmplementeerd. In de opdrachten kunt u zien dat de database zich in de servicelaag Algemeen gebruik bevindt met vier vCores en in de serverloze rekenlaag met een bereik van virtuele kernen tussen 0,5 en 4. De serverloze rekenlaag is bedoeld voor onregelmatig, onvoorspelbaar gebruik met een lager gemiddeld rekengebruik in de loop van de tijd. De serverloze rekenlaag biedt automatisch schalen om prestatiebeheer te vereenvoudigen en wordt alleen gefactureerd voor de hoeveelheid gebruikte rekenkracht. De serverloze rekenlaag biedt ook ondersteuning voor automatisch onderbreken en hervatten om verdere prijsoptimalisatie te helpen. Als uw database wordt onderbroken, betaalt u alleen voor opslag. De serverloze rekenlaag is een uitstekende oplossing voor het busvangende scenario omdat deze zich in de ontwikkelingsfase bevindt (niet 24/7 gebruikt) en het is onbekend hoe populair het zal zijn wanneer u start (hoeveel rekenkracht het nodig heeft).

    Als u problemen ondervindt of wilt bevestigen dat de resources zijn geïmplementeerd, kunt u dit controleren in Azure Portal.

Verbinding maken naar Azure SQL Database met Azure Data Studio

Zodra uw database is geïmplementeerd, zijn er veel manieren waarop u er verbinding mee kunt maken en ermee kunt werken: sqlcmd, Azure Data Studio, SSMS, de query-editor in de portal, enzovoort. Hier leert u hoe u verbinding maakt met de database met behulp van Azure Data Studio.

Notitie

Afhankelijk van uw lokale configuratie (bijvoorbeeld als u een VPN gebruikt), kan Azure Data Studio u vragen uw IP-adres toe te voegen aan de serverfirewall. U kunt uw IP-adres toevoegen aan de serverfirewall in Azure Portal door de stappen in dit artikel te volgen.

  1. Open Azure Data Studio en controleer of de map met de codeopslagplaats is geopend door het verkennerpictogram op de activiteitenbalk te selecteren. Als u de codebestanden niet ziet, gaat u terug naar de vorige oefening om uw omgeving te configureren.

  2. Selecteer Verbinding maken ions in de activiteitenbalk. Al uw databaseverbindingen kunnen hier worden gemaakt en opgeslagen.

  3. Selecteer naast Servers de knop Nieuwe Verbinding maken ion (deze ziet eruit als een server met een plusteken).

  4. Vul in het deelvenster Verbinding maken details dat wordt geopend de volgende gegevens in:
    Verbinding maken iontype: Microsoft SQL Server
    Server: bus-server[uniqueID].database.windows.net
    Verificatietype: SQL-aanmelding
    Gebruikersnaam: cloudadmin
    Wachtwoord: uw wachtwoord
    Wachtwoord onthouden: selectievakje
    Database: bus-db
    Servergroep: standaard
    Naam (optioneel): leeg laten

  5. Selecteer Verbinding maken.

  6. Zodra er een verbinding tot stand is gebracht, moet u in het deelvenster Verbinding maken ionen door de inhoud van de database kunnen navigeren.

Het schema van de database instellen met T-SQL

Zodra u bent verbonden met een database, moet u meestal het databaseschema implementeren en de database aanpassen aan de vereisten van uw scenario door tabellen te maken. Met behulp van een reeks T-SQL-scripts in een SQL-notebook in Azure Data Studio configureert u de database ter ondersteuning van uw toepassing en laadt u enkele initiële busgerelateerde gegevens.

  1. Selecteer in Azure Data Studio het verkennerpictogram op de activiteitenbalk.

  2. Open 01-set-up-database.ipynbonder de map database\notebooks.

  3. Volg de stappen in het SQL-notebook om de oefening te voltooien en ga vervolgens hier terug.

Busgegevens verwerken met Azure SQL Database

Nu uw database is geconfigureerd, is het tijd om dieper in te gaan op de wijze waarop Azure SQL Database de realtime JSON-gegevens ontvangt en opslaat in de database. Gelukkig heeft Azure SQL Database JSON-ondersteuning, zodat deze eenvoudig kan worden beheerd. Vervolgens kunt u de georuimtelijke mogelijkheden in Azure SQL Database gebruiken om de afstanden tussen bussen te vinden, geofences te definiëren en op te slaan, en zelfs te bepalen of een bus zich binnen een bepaalde geofence bevindt. Met een basis zoals deze wordt uw toepassingsontwikkeling aanzienlijk vereenvoudigd. Deze oefening wordt voltooid in een SQL-notebook in Azure Data Studio, vergelijkbaar met de vorige activiteit.

  1. Selecteer in Azure Data Studio het verkennerpictogram op de activiteitenbalk.

  2. Open 02-json-geospatial-sql-db.ipynbonder de map database\notebooks.

  3. Volg de stappen in het SQL-notebook om de oefening te voltooien en ga vervolgens hier terug.