Övning – Konfigurera Azure SQL Database

Slutförd

I den här lektionen distribuerar du en logisk Azure SQL-server och skapar databaser för att använda de funktioner som beskrivs för att skydda din Azure SQL Database.

Konfigurera: Använda skript för att distribuera Azure SQL Database

Till höger visas Azure Cloud Shell, som är ett sätt att interagera med Azure via en webbläsare. Innan du påbörjar övningen kör du ett skript i Cloud Shell för att skapa din miljö med exempeldatabasen AdventureWorks i Azure SQL Database. 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. Observera , passwordunique ID, och region, eftersom de inte visas igen.

  1. Börja med att hämta din lokala IP-adress. Se till att du är frånkopplad från alla VPN-tjänster 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
    
  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.

    $adminSqlLogin = "cloudadmin"
    $password = Read-Host "Your username is 'cloudadmin'. 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'. Enter the value (include periods) next to 'Address' " 
    # Get resource group and location and random string
    $resourceGroup = Get-AzResourceGroup | Where ResourceGroupName -like "<rgn>[sandbox resource group name]</rgn>"
    $resourceGroupName = $resourceGroup.ResourceGroupName    
    $uniqueID = Get-Random -Minimum 100000 -Maximum 1000000
    $storageAccountName = "mslearnsa"+$uniqueID
    $location = $resourceGroup.Location
    # The logical server name has to be unique in the system
    $serverName = "aw-server$($uniqueID)"
    
  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å Enter när du har klistrat in koden, eftersom den sista raden inte körs som standard.

    Write-Host "Your unique ID for future exercises in this module:" $uniqueID
    Write-Host "Your resource group name is:" $resourceGroupName
    Write-Host "Your resources were deployed in the following region:" $location
    Write-Host "Your server name is:" $serverName
    

    Kommentar

    Kom ihåg att anteckna , passwordunique IDoch region. Du kommer att använda dem i resten av modulen.

  4. Kör följande skript för att distribuera en logisk Azure SQL Database-server med AdventureWorks exemplet, samt en transaktionsregisterdatabas som vi diskuterar i framtida enheter. Skriptet lägger också till din IP-adress som en brandväggsregel, aktiverar Microsoft Defender för SQL och skapar ett lagringskonto för användning i framtida enheter. Tillåt flera minuter för skriptet att slutföras.

    # The sample database name
    $databaseName = "AdventureWorks"
    # The ledger database name
    $databaseName2 = "myLedgerDatabase"
    # The storage account name has to be unique in the system
    $storageAccountName = $("sql$($uniqueID)")
    # 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 databases
    $database = New-AzSqlDatabase  -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -DatabaseName $databaseName `
        -SampleName "AdventureWorksLT" `
        -Edition "GeneralPurpose" -Vcore 2 -ComputeGeneration "Gen5"
    $database2 = New-AzSqlDatabase  -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -DatabaseName $databaseName2 `
        -Edition "GeneralPurpose" -Vcore 2 -ComputeGeneration "Gen5"
    # Enable Microsoft Defender for SQL
    $azureDefender = Enable-AzSqlServerAdvancedDataSecurity `
        -ResourceGroupName $resourceGroupName `
        -ServerName $serverName
    # Create a storage account
    $storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroupName `
        -AccountName $storageAccountName `
        -Location $location `
        -Type "Standard_LRS"
    
  5. Öppna SQL Server Management Studio (SSMS) på din lokala enhet och skapa sedan en ny anslutning till den logiska servern. Som Servernamn anger du den logiska Azure SQL Database-serverns namn (till exempel aw-server.database.windows.net<unique ID>). Om du inte sparade namnet tidigare kan du behöva hämta det från Azure-portalen igen.

    I Azure-portalen söker du efter AdventureWorks för att leta upp din databas och dess associerade logiska server.

    Ändra autentiseringen till SQL Server-autentisering och ange motsvarande inloggning och lösenord för serveradministratören som du angav under distributionen i föregående övning.

    Markera kryssrutan Kom ihåg lösenord och välj sedan Anslut.

    Skärmbild av hur du ansluter till SQL Database i SSMS.

    Kommentar

    Beroende på den lokala konfigurationen (till exempel VPN) kan klientens IP-adress skilja sig från IP-adressen som användes vid distributionen i Azure-portalen. Om den är annorlunda visas popup-meddelandet ”Klientens IP-adress har inte åtkomst till servern. Logga in på ett Azure-konto och skapa en ny brandväggsregel för att aktivera åtkomst." Om du får det här meddelandet loggar du in med det konto som du använder för sandbox-miljön och lägger till en brandväggsregel för klientens IP-adress. I SSMS kan du utföra alla de här stegen i popup-guiden.

  6. När du är ansluten till din logiska Azure SQL-server expanderar du mappen Databaser .

  7. Du bör se de två databaser som skapades och AdventureWorksmyLedgerDatabase. Högerklicka på myLedgerDatabase databasen och välj Ny fråga och kör sedan följande kommando för att skapa en tabell med namnet Account.Balance. Du kan köra frågan genom att välja Kör i aktivitetsfältet.

    CREATE SCHEMA [Account];
    GO  
    CREATE TABLE [Account].[Balance]
    (
        [CustomerID] INT NOT NULL PRIMARY KEY CLUSTERED,
        [LastName] VARCHAR (50) NOT NULL,
        [FirstName] VARCHAR (50) NOT NULL,
        [Balance] DECIMAL (10,2) NOT NULL
    )
    WITH 
    (
     SYSTEM_VERSIONING = ON (HISTORY_TABLE = [Account].[BalanceHistory]),
     LEDGER = ON
    );