Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:Azure SQL Database
Azure SQL Managed Instance
Rekommendationer för Azure SQL Database-justering genereras av automatisk justering i Azure SQL Database. 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
PowerShell-modulen Azure Resource Manager (AzureRM) avskaffades den 29 februari 2024. All framtida utveckling bör använda Az.Sql-modulen. Användare rekommenderas att migrera från AzureRM till Az PowerShell-modulen för att säkerställa fortsatt support och uppdateringar. AzureRM-modulen underhålls inte längre eller stöds inte längre. Argumenten för kommandona i Az PowerShell-modulen och i AzureRM-modulerna är i stort sätt identiska. Mer information om deras kompatibilitet finns i Introduktion till den nya Az PowerShell-modulen.
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 Automation och 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.
Välj + Skapa en resurs på resursmenyn.
Sök efter Automation.
Välj Automation-appen i sökresultaten.
I fönstret "Skapa ett Automation-konto" väljer du Skapa.
Välj en prenumeration och resursgrupp som ska användas för PowerShell-skriptkörningen. Ange ett namn för det här automationskontot.
Välj Avancerat. Kontrollera att Systemtilldelad är markerat så att en systemtilldelad hanterad identitet (SAMI) skapas för att autentisera till Azure-resurser.
Välj Taggar. Överväg att använda Azure-taggar. Till exempel taggen "Ägare" eller "CreatedBy" för att identifiera vem som skapade resursen och taggen "Miljö" för att identifiera om den här resursen finns i produktion, utveckling osv. Mer information finns i Utveckla din namngivnings- och taggningsstrategi för Azure-resurser.
Välj Översikt och Skapa.
Slutför skapandet av automationskontot genom att välja Skapa.
Tilldela Azure-roller till det systemtilldelade hanterade identitetskontot
Ett Automation-konto kan använda sin systemtilldelade hanterade identitet för att hämta token för att få åtkomst till andra resurser som skyddas av Microsoft Entra-ID, till exempel Azure SQL Database. Sådana token representerar inte någon specifik appanvändare. I stället representerar de appen som använder resursen. I det här fallet representerar till exempel token ett Automation-konto.
Innan du skapar en Azure Automation-runbook är det viktigt att bevilja rätt behörighetsnivå till automationskontot, enligt principen om lägsta behörighet. När du använder en systemtilldelad hanterad identitet räcker det med att lägga till rollerna SQL DB-deltagare och SQL Server-deltagare i SAMI för att automatisera Azure SQL Database-uppgifter. I de flesta scenarier använder du omfånget resursgruppsnivå om din automatisering endast riktar sig mot specifika databaser. Om den måste fungera i en hel prenumeration använder du omfånget för prenumerationsnivå.
I följande exempel används Azure PowerShell för att tilldela SQL DB Contributor-rollen i den aktuella prenumerationen till det systemtilldelade hanterade identitetskontot.
$roleAssignmentParams = @{
ObjectId = "<automation-Identity-object-id>"
Scope = "/subscriptions/<subscription-id>"
RoleDefinitionName = "SQL DB Contributor"
}
New-AzRoleAssignment @roleAssignmentParams
Följ dessa steg för att lägga till dessa roller i en systemtilldelad hanterad identitet från Azure-portalen:
- Logga in på Azure-portalen.
- Leta upp det nyligen skapade Azure Automation-kontot.
- Under Kontoinställningar väljer du Identitet.
- Under Behörigheter väljer du rutan Azure-rolltilldelningar .
- Välj Lägg till rolltilldelning (förhandsversion).
- I listrutan Omfång väljer du den uppsättning resurser som rolltilldelningen gäller – Prenumeration, Resursgrupp, Roll och Omfång.
- I listrutan Roll väljer du en roll som SQL DB-deltagare.
- Välj Spara.
Upprepa stegen från steget Lägg till rolltilldelning för att lägga till rollen SQL Server-deltagare .
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 kommandona Get-AzResource och Get-AzSqlDatabaseRecommendedAction för vilka Azure Module version 4 och senare krävs.
- Information om hur du uppdaterar dina Azure-moduler finns i 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 Automation-konto väljer du menyalternativet Runbooks till vänster för att skapa en ny Azure Automation-runbook med PowerShell-skriptet. Mer information om hur du skapar Automation-runbooks finns i Skapa en ny runbook.
- Om du vill lägga till en ny runbook väljer du menyalternativet +Lägg till en runbook och väljer sedan Snabbskapa – Skapa en ny runbook.
- I fönstret Runbook skriver du in namnet på din runbook (i det här exemplet används AutomaticTuningEmailAutomation ), väljer du typen av runbook som PowerShell och skriver en beskrivning av den här runbooken för att beskriva dess syfte.
- Välj 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. Information om hur du hämtar ditt Azure-prenumerations-ID finns i Hämta ditt GUID för Azure-prenumeration.
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
Spara skriptet genom att välja Spara . När du är nöjd med skriptet och väljer Publicera för att publicera den här runbooken.
I huvudfönstret för runbook kan du välja Starta för att testa skriptet. Välj Utdata för att visa resultatet av skriptet som körs. Det här utdata kommer att utgöra innehållet i din e-post.
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ättningen 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:
- Öppna menyalternativet Mina flöden .
- I Mina flöden väljer du länken +Skapa från tom överst på sidan.
- Välj länken Sök efter hundratals anslutningar och utlösare.
- I sökfältet skriver du upprepning och väljer Schema – Upprepning från sökresultaten 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 från 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.
- Välj 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 Återkommande flö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).
- Välj i fältet Jobb-ID för menyn Dynamiskt innehåll som ska visas. I den här menyn väljer du alternativet Jobb-ID.
- Välj 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äljer 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ältet Ämne skriver du in ämnet för din e-post, till exempel "Automatisk justering av e-postaviseringar för rekommendationer".
- Välj i fältet Brödtext för att menyn med Dynamiskt innehåll ska visas. Från den här menyn går du till Hämta jobbutdata och väljer Innehåll.
- Välj 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 ämnesraden för e-post 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 att skicka e-post till separata mottagare för automatiska justeringsrekommendationer för separata prenumerationer.
Föregående steg konfigurerar 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 väljer du Kör nu. Statistik för körning av automatiserade jobb, som visar lyckade e-postaviseringar som skickats ut, kan visas i panelen Flödesanalys.
Analysfältet för Flöden är användbart för att övervaka framgången av jobbexekveringar 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.