練習 - 部署及設定 Azure SQL Database
Azure SQL Database 是作業、交易和混合分析工作負載的絕佳選擇。
在搭公車案例中,因為 Azure SQL Database 是包含 JSON 和地理空間支援等新式功能的企業資料庫,因此雀屏中選。
在這裡,您會使用指令碼部署 Azure SQL Database、在 Azure Data Studio 中連線至 Azure SQL Database,並使用 T-SQL 設定適用於案例的資料庫。 接著,您將探索與搭公車有關的 JSON 和地理空間支援。
使用 PowerShell 部署 Azure SQL Database
為了替搭公車案例設定資料庫,您必須先部署要使用的資料庫。 若要這樣做,您將使用 Azure Cloud Shell。 您也可以透過 Azure 入口網站取得 Cloud Shell,此服務讓您可以建立並管理 Azure 資源。 此服務已預先安裝各種工具,包括 Azure CLI、Azure PowerShell 和 sqlcmd。 在此練習中,您會使用 Azure PowerShell,但也可以使用 Azure CLI 完成相同的工作。 在此指令碼中,系統會提示輸入新資料庫的密碼和本機 IP 位址,讓裝置連線資料庫。
這些指令碼大約需要 3 到 5 分鐘的時間才能完成。 請務必記下密碼、唯一識別碼及區域,因為之後不會再次顯示這些資訊。
提示
您可以使用 CTRL + Shift + V 將命令貼到 Cloud Shell 中。 CTRL + V 將不會有作用。
首先取得本機公用 IP 位址。 請確定已中斷與任何 VPN 服務的連線,並已開啟裝置上的本機 PowerShell 終端機。 執行下列命令,並記下產生的 IP 位址。
(Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content
提示
如果您不在 Windows 裝置上,則需要使用別的方法找出 IP 位址。 在終端中,您可以執行
curl ifconfig.co
。在 Cloud Shell 中,執行下列命令。 輸入複雜密碼,然後在出現提示時,輸入上一個步驟取得的本機公用 IP 位址。
注意
複雜密碼必須包含:
- 最少 8 個字元,最多 16 個字元
- 需要具有下列 4 種字元中的 3 種:
- 小寫字元
- 大寫字元
- 數字 (0 到 9)
- 符號 ( @ # $ % ^ & * - _ + = [ ] { } | \ : ‘ , . ? / ` ~ “ ( ) ; )
# 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"
在 Cloud Shell 中執行下列程式碼,然後將本課程模組所需的資訊輸出並儲存至文字檔中。 在貼上程式碼之後,您可能需要按 Enter,因為預設不會執行最後一行。
# 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
請記下密碼、唯一識別碼及區域。 您將會在整個課程模組中用到這些資訊。
執行下列指令碼,以部署空的 Azure SQL Database 執行個體和邏輯伺服器。 此指令碼也會將 IP 位址新增為防火牆規則,讓您可以存取資料庫。
# 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."
指令碼需要幾分鐘時間才能完成。 先前區塊中有四個主要命令; 讓我們將其細分。 第一個命令會建立 Azure SQL Database 邏輯伺服器,此伺服器可以作為連線執行個體,也可以作為一種分組方式,將所有指派給該伺服器的資料庫中繼資料與原則設定加以分組。 接下來的兩個命令建立兩個防火牆規則:一個允許您的 IP 位址連線,另一個允許其他的 Azure 服務連線。 當您使用 Azure DevOps 和/或 GitHub Actions 設定 CI/CD 管道時,此設定特別實用。
最後一個命令會部署資料庫至該邏輯伺服器。 從命令中,您可以看出資料庫是位於具有四個虛擬核心的通用服務層,以及位於具有 0.5 到 4 個虛擬核心範圍的無伺服器計算層。 無伺服器計算層適用於一段時間內平均計算使用率較低的間歇性、無法預測的使用量。 無伺服器計算層可提供自動調整計算規模,以簡化效能管理,而且只針對所使用的計算量收費。 無伺服器計算層也支援自動暫停和繼續,有助於進一步最佳化價格。 當您的資料庫暫停時,您只需支付儲存體的費用。 針對搭公車這個案例,無伺服器計算層是絕佳的解決方案,因為一切都尚在開發階段 (並非全年無休運作),也還不知道推出時的接受度 (會需要多少計算量)。
如有任何問題,或想確認資源已部署,您可以在 Azure 入口網站中檢閱。
使用 Azure Data Studio 連線至 Azure SQL Database
部署資料庫後,您可以透過許多方式連線資料庫,並與其互動:sqlcmd、Azure Data Studio、SSMS、入口網站中的查詢編輯器等。接著,您會了解如何使用 Azure Data Studio 連線至資料庫。
注意
視您的本機設定而定 (例如,如果您位於 VPN 上),Azure Data Studio 可能會提示您將 IP 位址新增至伺服器防火牆。 您可以遵循本文中的步驟,在 Azure 入口網站中將 IP 位址新增至伺服器防火牆。
開啟 Azure Data Studio,然後選取 [活動列] 上的 Explorer 圖示以確認程式碼存放庫資料夾已開啟。 如果您看不到程式碼檔案,請返回上一個練習,設定您的環境。
從 [活動列] 中選取 [連線]。 您可以在此建立或儲存所有資料庫連接。
在 [伺服器] 旁,選取 [新增連線] 按鈕 (看起來像一部有加號的伺服器)。
在開啟的 [連線詳細資料] 窗格中,填寫下列資訊:
連線類型:Microsoft SQL Server
伺服器:bus-server[uniqueID].database.windows.net
驗證類型:SQL 登入
使用者名稱:cloudadmin
密碼:您的密碼
記住密碼:核取方塊
資料庫:bus-db
伺服器群組:預設
名稱 (選用):保留空白選取 Connect。
成功連線後,您應可在 [連線] 窗格中瀏覽資料庫的內容。
使用 T-SQL 設定資料庫的結構描述
連線至任何資料庫後,通常需要部署資料庫結構描述,並建立資料表來調整資料庫,以符合案例的需求。 在 Azure Data Studio 中,您將在 SQL 筆記本中使用一連串 T-SQL 指令碼,將資料庫設定為支援您的應用程式,並載入公車相關的一些初始資料。
在 Azure Data Studio 中,選取 [活動列] 中的 Explorer 圖示。
在資料夾
database\notebooks
下,開啟01-set-up-database.ipynb
。請遵循 SQL 筆記本中的步驟完成練習,然後回到這裡。
使用 Azure SQL Database 處理公車資料
現在您已設定好資料庫,該深入探討 Azure SQL Database 如何接收即時 JSON 資料並將其儲存至資料庫。 幸好 Azure SQL Database 有 JSON 支援,所以這很容易處理。 接著,您可以使用 Azure SQL Database 的地理空間功能,查看公車間的距離、定義並儲存地理柵欄,甚至判斷公車是否在特定的地理柵欄內。 透過這樣的基礎可大幅簡化應用程式開發。 此練習會在 Azure Data Studio 的 SQL 筆記本中完成,類似於之前的活動。
在 Azure Data Studio 中,選取 [活動列] 中的 Explorer 圖示。
在資料夾
database\notebooks
下,開啟02-json-geospatial-sql-db.ipynb
。請遵循 SQL 筆記本中的步驟完成練習,然後回到這裡。