E-postaviseringar för automatisk justering
gäller för:Azure SQL DatabaseAzure SQL Managed Instance
Justeringsrekommendationer för Azure SQL Database genereras av Azure SQL Database automatisk justering. Den här lösningen övervakar och analyserar kontinuerligt arbetsbelastningar för databaser med anpassade justeringsrekommendationer för varje enskild databas som rör skapande av index, borttagning av index och optimering av frågekörningsplaner.
Automatiska justeringsrekommendationer för Azure SQL Database kan visas i Azure-portalen, hämtas med REST API--anrop eller med hjälp av T-SQL-- och PowerShell--kommandon. Den här artikeln baseras på hur du använder ett PowerShell-skript för att hämta rekommendationer för automatisk justering.
Obs
Den här artikeln använder Azure Az PowerShell-modulen, som är den rekommenderade PowerShell-modulen för interaktion med Azure. Information om hur du kommer igång med Az PowerShell-modulen finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i Migrera Azure PowerShell från AzureRM till Az.
Viktig
Modulen Az
ersätter AzureRM
. All framtida utveckling gäller för modulen Az.Sql
.
Automatisera e-postaviseringar för automatiska justeringsrekommendationer
Följande lösning automatiserar sändning av e-postmeddelanden som innehåller automatiska justeringsrekommendationer. Lösningen som beskrivs består av att automatisera körningen av ett PowerShell-skript för att hämta justeringsrekommendationer med hjälp av Azure Automationoch automatisering av schemaläggning av e-postleveransjobb med hjälp av Microsoft Power Automate.
Skapa Azure Automation-konto
För att använda Azure Automation är det första steget att skapa ett automationskonto och konfigurera det med Azure-resurser som ska användas för körning av PowerShell-skriptet. Mer information om Azure Automation och dess funktioner finns i Komma igång med Azure Automation.
Följ de här stegen för att skapa ett Azure Automation-konto med hjälp av metoden för att välja och konfigurera en Automation-app från Azure Marketplace:
Logga in på Azure-portalen.
Klicka på "+ Skapa en resurs" i det övre vänstra hörnet.
Sök efter "Automation" (tryck på Enter).
Klicka på Automation-appen i sökresultaten.
I fönstret "Skapa ett Automation-konto" klickar du på "Skapa".
Fyll i nödvändig information: Ange ett namn för det här automationskontot, välj ditt Azure-prenumerations-ID och Azure-resurser som ska användas för PowerShell-skriptkörningen.
För alternativet "Create Azure Run As account" väljer du Ja för att konfigurera vilken typ av konto som PowerShell-skriptet körs under med hjälp av Azure Automation. För att lära dig mer om kontotyper, se Run As-konto.
Avsluta skapandet av automationskontot genom att klicka på Skapa.
Tips
Registrera ditt Azure Automation-kontonamn, prenumerations-ID och resurser (till exempel kopiera klistra in till ett anteckningsblock) precis som du angav när du skapade Automation-appen. Du behöver den här informationen senare.
Om du har flera Azure-prenumerationer som du vill skapa samma automatisering för måste du upprepa den här processen för dina andra prenumerationer.
Uppdatera Azure Automation-moduler
PowerShell-skriptet för att hämta rekommendationen för automatisk justering använder Get-AzResource- och Get-AzSqlDatabaseRecommendedAction kommandon som Azure Module version 4 och senare krävs för.
- Om dina Azure-moduler behöver uppdateras kan du läsa Az-modulstöd i Azure Automation.
Skapa en Azure Automation-runbook
Nästa steg är att skapa en Runbook i Azure Automation där PowerShell-skriptet för hämtning av justeringsrekommendationer finns.
Följ dessa steg för att skapa en ny Azure Automation-runbook:
Få åtkomst till det Azure Automation-konto som du skapade i föregående steg.
I fönstret automationskonto klickar du på menyalternativet "Runbooks" till vänster för att skapa en ny Azure Automation-runbook med PowerShell-skriptet. Mer information om hur du skapar automatiseringsrunbooks finns i Skapa en ny runbook.
Om du vill lägga till en ny runbook klickar du på menyalternativet "+ Lägg till en runbook" och klickar sedan på "Snabb skapa – Skapa en ny runbook"..
I fönstret Runbook skriver du in namnet på din runbook (i det här exemplet "AutomaticTuningEmailAutomation" används), väljer du typen av runbook som PowerShell och skriver en beskrivning av den här runbooken för att beskriva dess syfte.
Klicka på knappen Skapa för att slutföra skapandet av en ny runbook.
Följ dessa steg för att läsa in ett PowerShell-skript i den runbook som skapats:
- I fönstret "Redigera PowerShell Runbook" väljer du "RUNBOOKS" i menyträdet och expanderar vyn tills du ser namnet på din runbook (i det här exemplet "AutomaticTuningEmailAutomation"). Välj den här runbooken.
- På den första raden i "Redigera PowerShell Runbook" (från och med nummer 1) kopierar du följande PowerShell-skriptkod. Det här PowerShell-skriptet tillhandahålls as-is för att hjälpa dig att börja. Ändra skriptet så att det passar dina behov.
I huvudet på det angivna PowerShell-skriptet måste du ersätta <SUBSCRIPTION_ID_WITH_DATABASES>
med ditt Azure-prenumerations-ID. Mer information om hur du hämtar ditt Azure-prenumerations-ID finns i Hämta ditt AZURE-prenumerations-GUID.
För flera prenumerationer kan du lägga till dem med kommaavgränsade värden till attributet "$subscriptions" i skriptets header.
# 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
Klicka på knappen "Spara" i det övre högra hörnet för att spara skriptet. När du är nöjd med skriptet klickar du på knappen "Publicera" för att publicera den här runbooken.
I huvudfönstret för runbook kan du välja att klicka på knappen "Starta" för att testa skriptet. Klicka påutdataför att visa resultatet av skriptet som kördes. Det här utdata kommer att utgöra innehållet i din e-post. Exempelutdata från skriptet visas i följande skärmbild.
Se till att justera innehållet genom att anpassa PowerShell-skriptet efter dina behov.
Med stegen ovan är PowerShell-skriptet för att hämta automatiska justeringsrekommendationer inläst i Azure Automation. Nästa steg är att automatisera och schemalägga e-postleveransjobbet.
Automatisera e-postjobben med Microsoft Power Automate
För att slutföra lösningen skapar du som sista steg ett automatiseringsflöde i Microsoft Power Automate som består av tre åtgärder (jobb):
- "Azure Automation – Skapa jobb" – används för att köra PowerShell-skriptet för att hämta automatiska justeringsrekommendationer i Azure Automation-runbooken.
- "Azure Automation – Hämta jobbutdata" – används för att hämta utdata från det körda PowerShell-skriptet.
- "Office 365 Outlook – Skicka ett e-postmeddelande" – används för att skicka ut e-post. E-postmeddelanden skickas ut med hjälp av arbets- eller skolkontot för den person som skapar flödet.
Mer information om Microsoft Power Automate-funktioner finns i Komma igång med Microsoft Power Automate.
Förutsättning för det här steget är att registrera dig för ett Microsoft Power Automate- konto och logga in. När du är inne i lösningen följer du dessa steg för att konfigurera ett nytt flöde:
- Komma åt menyalternativet "Mina flöden".
- Välj länken "+Skapa från tomt" längst upp på sidan i Mina flöden.
- Klicka på länken "Sök efter hundratals anslutningar och triggar" längst ner på sidan.
- I sökfältet skriver du "upprepning", och väljer "Schedule - Recurrence" från sökresultatet för att schemalägga att e-postleveransjobbet ska köras.
- I fönstret Återkommande i fältet Frekvens väljer du schemaläggningsfrekvensen för det här flödet som ska köras, till exempel skicka automatiserad e-post varje minut, timme, dag, vecka osv.
Nästa steg är att lägga till tre jobb (skapa, hämta utdata och skicka e-post) till det nyligen skapade återkommande flödet. Följ dessa steg för att lägga till de jobb som krävs i flödet:
Skapa åtgärd för att köra PowerShell-skript för att hämta justeringsrekommendationer
- Välj "+Nytt steg", följt av "Lägg till en åtgärd" i fönstret Upprepningsflöde.
- I sökfältet skriver du "automation" och väljer "Azure Automation – Skapa jobb" i sökresultaten.
- I fönstret Skapa jobb konfigurerar du jobbegenskaperna. För den här konfigurationen behöver du information om ditt Azure-prenumerations-ID, resursgrupp och Automation-konto som tidigare registrerats i fönstret Automation-konto. Mer information om tillgängliga alternativ i det här avsnittet finns i Azure Automation – Skapa jobb.
- Slutför skapandet av den här åtgärden genom att klicka på "Spara flöde".
Skapa en åtgärd för att hämta utdata från det körda PowerShell-skriptet
- Välj "+ Nytt steg", följt av "Lägg till en åtgärd" i fönstret Upprepningsflöde
- I sökfältet skriver du "automation" och väljer "Azure Automation – Hämta jobbutdata" från sökresultaten. Mer information om tillgängliga alternativ i det här avsnittet finns i Azure Automation – Hämta jobbutdata.
- Fyll i fält som krävs (ungefär som när du skapade föregående jobb) – fyll i ditt Azure-prenumerations-ID, resursgrupp och Automation-konto (som anges i fönstret Automation-konto).
- Klicka i fältet "Jobb-ID" för att visa menyn "Dynamiskt innehåll". I den här menyn väljer du alternativet "Jobb-ID".
- Slutför skapandet av den här åtgärden genom att klicka på "Spara flöde".
Skapa en åtgärd för att skicka ut e-post med hjälp av Office 365-integrering
- Välj "+Nytt steg", följt av "Lägg till en åtgärd" i fönstret Upprepningsflöde.
- I sökfältet skriver du "skicka ett e-postmeddelande" och välj "Office 365 Outlook – Skicka ett e-postmeddelande" från sökresultaten.
- I fältet "Till" skriver du den e-postadress som du behöver skicka e-postmeddelandet till.
- I fälttypen "Ämne" i ämnet för din e-post, till exempel "E-postavisering med automatiska justeringsrekommendationer".
- Klicka i fältet "Brödtext" för att visa menyn "Dynamiskt innehåll". I den här menyn går du till "Hämta jobbutdata" och väljer "Innehåll".
- Slutför skapandet av den här åtgärden genom att klicka på "Spara flöde".
Tips
Skapa separata flöden om du vill skicka automatiserade e-postmeddelanden till olika mottagare. I dessa ytterligare flöden ändrar du mottagarens e-postadress i fältet "Till" och e-postämnesraden i fältet "Ämne". Genom att skapa nya runbooks i Azure Automation med anpassade PowerShell-skript (till exempel med ändring av Azure-prenumerations-ID) kan du anpassa automatiserade scenarier ytterligare, till exempel genom att skicka e-post till separata mottagare för automatiska justeringsrekommendationer för separata prenumerationer.
Ovanstående avslutar de steg som krävs för att konfigurera arbetsflödet för e-postleveransjobbet. Hela flödet som består av tre åtgärder som skapats visas i följande bild.
Om du vill testa flödet klickar du på "Kör nu" i det övre högra hörnet i flödesfönstret.
Statistik för körning av automatiserade jobb, som visar lyckade e-postaviseringar som skickats ut, kan visas i panelen Flödesanalys.
Fönstret Flödesanalys är användbart för att övervaka hur framgångsrika jobbkörningar är och vid behov för felsökning. Vid felsökning kanske du också vill undersöka körningsloggen för PowerShell-skript som är tillgänglig via Azure Automation-appen.
De slutliga utdata från det automatiserade e-postmeddelandet ser ut ungefär som följande e-postmeddelande som tas emot när du har skapat och kört den här lösningen:
Genom att justera PowerShell-skriptet kan du justera utdata och formatering för det automatiserade e-postmeddelandet efter dina behov.
Du kan ytterligare anpassa lösningen för att skapa e-postaviseringar baserat på en specifik justeringshändelse och till flera mottagare för flera prenumerationer eller databaser, beroende på dina anpassade scenarier.
Nästa steg
- Mer information om hur automatisk justering kan hjälpa dig att förbättra databasprestanda finns i Automatisk justering i Azure SQL Database.
- Information om hur du aktiverar automatisk justering i Azure SQL Database för att hantera din arbetsbelastning finns i Aktivera automatisk justering.
- Om du vill granska och tillämpa automatiska justeringsrekommendationer manuellt kan du läsa Hitta och tillämpa prestandarekommendationer.