訓練
認證
Microsoft Certified: Azure Database Administrator Associate - Certifications
使用 Microsoft PaaS 關聯式資料庫供應項目管理用於雲端、內部部署和混合關聯式資料庫的 SQL Server 資料庫基礎結構。
適用於:Azure SQL 資料庫
Azure SQL 受控執行個體
Azure SQL 資料庫微調建議是由 Azure SQL 資料庫自動微調產生的。 此解決方案會持續監視和分析資料庫的工作負載,為每個與索引建立、索引刪除和查詢執行計畫最佳化相關的資料庫分別提供自訂微調建議。
Azure SQL 資料庫自動微調建議可以在 Azure 入口網站中檢視,使用 REST API 呼叫或是 T-SQL 和 PowerShell 命令擷取。 本文以使用 PowerShell 指令碼來擷取自動微調建議為基礎。
注意
本文使用 Azure Az PowerShell 模組,這是與 Azure 互動時建議使用的 PowerShell 模組。 若要開始使用 Az PowerShell 模組,請參閱安裝 Azure PowerShell。 若要瞭解如何遷移至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 遷移至 Az。
重要
PowerShell Azure Resource Manager (AzureRM) 模組已於 2024 年 2 月 29 日淘汰。 所有未來的開發都應該使用 Az.Sql 模組。 建議使用者從 AzureRM 遷移至 Az PowerShell 模組,以確保持續支援和更新。 不再維護或支援 AzureRM 模組。 Az PowerShell 模組和 AzureRM 模組中命令的自變數基本上完全相同。 如需相容性的詳細資訊,請參閱 新 Az PowerShell 模組簡介。
下列解決方案實現了包含自動微調建議的電子郵件通知的傳送自動化。 所述解決方案包含自動執行 PowerShell 指令碼,以使用 Azure 自動化擷取微調建議,並使用 Microsoft Power Automate 自動排程電子郵件傳遞作業。
若要使用 Azure 自動化,第一個步驟是建立自動化帳戶,並使用 Azure 資源進行設定,以用於執行 PowerShell 指令碼。 若要深入了解 Azure 自動化及其功能,請參閱開始使用 Azure 自動化。
請遵循下列步驟,透過從 Azure Marketplace 選取和設定自動化應用程式的方法,建立 Azure 自動化帳戶:
登入 Azure 入口網站。
按一下左上角的 [+ 建立資源]。
搜尋 [自動化] (按 Enter 鍵)。
按下搜尋結果中的自動化應用程式。
在 [建立自動化帳戶] 窗格中,按下 [建立]。
填入必要資訊:輸入此自動化帳戶的名稱,選取要用於PowerShell指令碼執行的 Azure 訂用帳戶 ID 和 Azure 資源。
針對 [建立 Azure 執行身分帳戶] 選項,選取 [是] 以設定 PowerShell 指令碼在 Azure 自動化的協助下執行時所用的帳戶類型。 若要深入了解帳戶類型,請參閱執行身分帳戶。
按下 [建立] 以結束建立自動化帳戶。
提示
記錄 Azure 自動化帳戶名稱、訂用帳戶 ID 和資源 (例如拷貝貼到記事本) 與建立自動化應用程式時所輸入的完全相同。 稍後的步驟將會需要此資訊。
如果您有數個想要建置相同自動化技術的 Azure 訂用帳戶,必須針對其他訂用帳戶重複此程序。
擷取自動微調建議的 PowerShell 指令碼使用 Get-AzResource 和 Get-AzSqlDatabaseRecommendedAction 命令,這些指令需要 Azure 模組版本 4 及更高版本。
下一個步驟是在 Azure 自動化中建立 Runbook,用於儲存擷取微調建議的 PowerShell 指令碼。
請遵循下列步驟建立新的 Azure 自動化 Runbook:
存取您在上一個步驟中建立的 Azure 自動化帳戶。
在自動化帳戶窗格中,按下左側的 [Runbook] 功能表項目,以使用 PowerShell 指令碼建立新的 Azure 自動化 Runbook。 若要深入了解如何建立自動化 Runbook,請參閱建立新的 Runbook。
若要新增 Runbook,按下 [+新增 Runbook] 功能表選項,然後按下 [快速建立 – 建立新的 Runbook]。
在 [Runbook] 窗格中,輸入 Runbook 的名稱 (在本範例中,使用 [AutomaticTuningEmailAutomation]),選取 Runbook 類型作為 PowerShell,並撰寫此 Runbook 的描述來說明其用途。
按下 [建立] 按鈕以完成建立新的 Runbook。
請遵循下列步驟,在建立的 Runbook 內載入 PowerShell 指令碼:
在提供的 PowerShell 指令碼標頭中,需要將 <SUBSCRIPTION_ID_WITH_DATABASES>
替換為您的 Azure 訂用帳戶 ID。 若要了解如何擷取您的 Azure 訂用帳戶 ID,請參閱取得您的 Azure 訂用帳戶 GUID。
如果有多個訂用帳戶,可以採用以逗號分隔的形式,將它們新增至指令碼標頭中的 "$subscriptions" 屬性。
# PowerShell script to retrieve Azure SQL Database automatic tuning recommendations.
#
# Provided "as-is" with no implied warranties or support.
# The script is released to the public domain.
#
# Replace <SUBSCRIPTION_ID_WITH_DATABASES> in the header with your Azure subscription ID.
#
# Microsoft Azure SQL Database team, 2018-01-22.
# Set subscriptions : IMPORTANT – REPLACE <SUBSCRIPTION_ID_WITH_DATABASES> WITH YOUR SUBSCRIPTION ID
$subscriptions = ("<SUBSCRIPTION_ID_WITH_DATABASES>", "<SECOND_SUBSCRIPTION_ID_WITH_DATABASES>", "<THIRD_SUBSCRIPTION_ID_WITH_DATABASES>")
# Get credentials
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
# Define the resource types
$resourceTypes = ("Microsoft.Sql/servers/databases")
$advisors = ("CreateIndex", "DropIndex");
$results = @()
# Loop through all subscriptions
foreach($subscriptionId in $subscriptions) {
Select-AzSubscription -SubscriptionId $subscriptionId
$rgs = Get-AzResourceGroup
# Loop through all resource groups
foreach($rg in $rgs) {
$rgname = $rg.ResourceGroupName;
# Loop through all resource types
foreach($resourceType in $resourceTypes) {
$resources = Get-AzResource -ResourceGroupName $rgname -ResourceType $resourceType
# Loop through all databases
# Extract resource groups, servers and databases
foreach ($resource in $resources) {
$resourceId = $resource.ResourceId
if ($resourceId -match ".*RESOURCEGROUPS/(?<content>.*)/PROVIDERS.*") {
$ResourceGroupName = $matches['content']
} else {
continue
}
if ($resourceId -match ".*SERVERS/(?<content>.*)/DATABASES.*") {
$ServerName = $matches['content']
} else {
continue
}
if ($resourceId -match ".*/DATABASES/(?<content>.*)") {
$DatabaseName = $matches['content']
} else {
continue
}
# Skip if master
if ($DatabaseName -eq "master") {
continue
}
# Loop through all automatic tuning recommendation types
foreach ($advisor in $advisors) {
$recs = Get-AzSqlDatabaseRecommendedAction -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -AdvisorName $advisor
foreach ($r in $recs) {
if ($r.State.CurrentValue -eq "Active") {
$object = New-Object -TypeName PSObject
$object | Add-Member -Name 'SubscriptionId' -MemberType Noteproperty -Value $subscriptionId
$object | Add-Member -Name 'ResourceGroupName' -MemberType Noteproperty -Value $r.ResourceGroupName
$object | Add-Member -Name 'ServerName' -MemberType Noteproperty -Value $r.ServerName
$object | Add-Member -Name 'DatabaseName' -MemberType Noteproperty -Value $r.DatabaseName
$object | Add-Member -Name 'Script' -MemberType Noteproperty -Value $r.ImplementationDetails.Script
$results += $object
}
}
}
}
}
}
}
# Format and output results for the email
$table = $results | Format-List
Write-Output $table
按一下畫面右下角的 [儲存] 按鈕以儲存指令碼。 如果對指令碼滿意,按下 [發佈] 按鈕以發佈此 Runbook。
在主要 Runbook 窗格中,可以選擇按下 [開始] 按鈕來測試指令碼。 按下 [輸出] 以檢視所執行指令碼的結果。 此輸出將會是您的電子郵件的內容。 您可以在下列螢幕擷取畫面中看到指令碼的範例輸出。
請務必根據您的需求自訂 PowerShell 指令碼,調整內容。
執行上述步驟時,用於擷取自動微調建議的 PowerShell 指令碼將載入 Azure 自動化。 下一個步驟是自動化並排程電子郵件傳遞作業。
完成解決方案的最後一個步驟是,在 Microsoft Power Automate 中建立包含三個動作 (作業) 的自動化流程:
若要了解有關 Microsoft Power Automate 功能的更多資訊,請參閱 Power Automate 使用者入門。
此步驟的必要條件是註冊 Microsoft Power Automate 帳戶並登入。 進入解決方案之後,遵循下列步驟來設定新的流程:
下一個步驟是將三個作業 (建立、取得輸出和傳送電子郵件) 新增至新建立的定期流程。 若要將必要的作業新增至流程,請遵循下列步驟:
建立動作以執行 PowerShell 指令碼,擷取微調建議
建立動作以從執行的 PowerShell 指令碼中擷取輸出
使用 Office 365 整合建立用於傳送電子郵件的動作
提示
若要將自動電子郵件傳送給不同的收件者,請建立不同的流程。 在這些額外的流程中,變更 [收件者] 欄位中的收件者電子郵件位址,以及 [主旨] 欄位中的電子郵件主旨列。 使用自訂的 PowerShell 指令碼在 Azure 自動化中建立新的 Runbook (比如變更 Azure 訂用帳戶 ID),可讓您進一步自訂自動化案例,例如,向個別的收件者傳送有關個別訂用帳戶之自動微調建議的電子郵件。
上述文字總結了設定電子郵件傳遞作業工作流程需要完成的步驟。 下圖顯示由三個建置的動作所組成的整個流程。
若要測試流程,請按下流程窗格右上角的 [立即執行]。
[流程分析] 窗格將顯示執行自動化作業的統計資料,其中會顯示已成功送出電子郵件通知。
[流程分析] 窗格有助於監視作業執行是否成功,並在必要時用於疑難排解。 在進行疑難排解時,您也可以檢查能透過 Azure 自動化應用程式存取的 PowerShell 指令碼執行記錄。
自動化電子郵件的最終輸出看起來與建置和執行此解決方案之後收到的下列電子郵件類似:
透過調整 PowerShell 指令碼,您可以視需要調整自動化電子郵件的輸出和格式設定。
您可以進一步自訂解決方案,以根據特定的微調事件建立電子郵件通知,並針對多個訂用帳戶或資料庫向多個收件者建立電子郵件通知,具體取決於您的自訂案例。
訓練
認證
Microsoft Certified: Azure Database Administrator Associate - Certifications
使用 Microsoft PaaS 關聯式資料庫供應項目管理用於雲端、內部部署和混合關聯式資料庫的 SQL Server 資料庫基礎結構。
文件
Database Advisor 效能建議 - Azure SQL Database
Azure SQL 資料庫提供可提高 Azure SQL 資料庫中的查詢效能的資料庫建議。
自動調整概觀 - Azure SQL & SQL database in Fabric
自動調整會分析 SQL 查詢,並自動適應使用者工作負載。
使用 Azure 入口網站以找出可最佳化資料庫的效能建議。