練習 - 設定 Azure SQL Database

已完成

在本單元中,您將部署 Azure SQL 邏輯伺服器,並建立資料庫,以利用所討論的功能來保護 Azure SQL Database。

設定:使用指令碼來部署 Azure SQL Database

您會在右側看到 Azure Cloud Shell,這是使用瀏覽器來與 Azure 互動的方式。 在開始練習之前,您會在 Cloud Shell 中執行指令碼,以在 Azure SQL Database 中使用範例 AdventureWorks 資料庫建立您的環境。 在此指令碼中,系統會提示輸入新資料庫的密碼和本機 IP 位址,讓裝置連線資料庫。

這些指令碼大約需要 3 到 5 分鐘的時間才能完成。 請務必記下您的 passwordunique IDregion,因為不會再次顯示。

  1. 先取得您的本機 IP 位址。 請確定已中斷與任何 VPN 服務的連線,並已開啟裝置上的本機 PowerShell 終端機。 執行下列命令,並記下產生的 IP 位址。

    (Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content
    
  2. 在 Cloud Shell 中,執行下列命令。 輸入複雜密碼,然後在出現提示時,輸入上一個步驟取得的本機公用 IP 位址。 將 "[沙箱資源群組名稱]" 取代為 "[沙箱資源群組名稱]"。

    $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 "[sandbox resource group name]"
    $resourceGroupName = "[sandbox resource group name]"
    $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. 在 Cloud Shell 中執行下列程式碼,然後將本課程模組所需的資訊輸出並儲存至文字檔中。 在貼上程式碼之後,您可能需要按 Enter,因為預設不會執行最後一行。

    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
    

    注意

    記得記下您的 passwordunique IDregion。 您將會在整個課程模組中用到這些資訊。

  4. 執行下列指令碼,以使用 AdventureWorks 範例部署 Azure SQL Database 邏輯伺服器,以及我們將在未來單元中討論的總帳資料庫。 此指令碼也會將您的 IP 位址新增為防火牆規則、啟用適用於 SQL 的 Microsoft Defender,並建立儲存體帳戶供未來的單元使用。 稍候片刻,等待此指令碼完成。

    # 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. 開啟 SQL Server Management Studio (SSMS),並向邏輯伺服器建立新的連線。 針對 [伺服器名稱],輸入 Azure SQL Database 邏輯伺服器名稱 (例如 aw-server<unique ID>.database.windows.net)。 如果先前未儲存此名稱,則可能需要前往 Azure 入口網站來取得。

    在 Azure 入口網站中,搜尋 AdventureWorks 以尋找資料庫及其相關聯邏輯伺服器。

    將驗證變更為 [SQL Server 驗證],並輸入對應的伺服器管理員登入與密碼 (您在上一個練習中於部署期間所提供)。

    選取 [記住密碼] 核取方塊,然後選取 [連線]

    如何在 SSMS 中連線至 SQL Database 的螢幕擷取畫面。

    注意

    視本機設定 (例如 VPN) 而定,用戶端 IP 位址可能會與部署期間 Azure 入口網站所使用的 IP 位址不同。 若確實不同,則將看到快顯訊息表示「用戶端 IP 位址無法存取伺服器。 請登入 Azure 帳戶,並建立新的防火牆規則以啟用存取。」如果收到此訊息,請使用在沙箱中所用的帳戶來登入,並為用戶端 IP 位址新增防火牆規則。 您可透過使用 SSMS 中的快顯精靈來完成上述所有步驟。

  6. 連線到您的 Azure SQL 邏輯伺服器之後,請展開 [資料庫] 資料夾。

  7. 您應該會看到兩個已建立的資料庫,AdventureWorksmyLedgerDatabase。 以滑鼠右鍵按一下 myLedgerDatabase 資料庫並選取 [新增查詢],然後執行下列命令來建立名為 Account.Balance 資料表。 您可以選取工作列中的 [執行] 來執行查詢。

    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
    );