E-mailmeldingen voor automatisch afstemmen

Van toepassing op: Azure SQL DatabaseAzure SQL Managed Instance

Aanbevelingen voor het afstemmen van Azure SQL Database worden gegenereerd door automatische afstemming van Azure SQL Database. Deze oplossing bewaakt en analyseert continu workloads van databases die aangepaste afstemmingsaanvelingen bieden voor elke afzonderlijke database met betrekking tot het maken van indexen, het verwijderen van indexen en het optimaliseren van queryuitvoeringsplannen.

Aanbevelingen voor automatisch afstemmen van Azure SQL Database kunnen worden weergegeven in Azure Portal, worden opgehaald met REST API-aanroepen of met behulp van T-SQL - en PowerShell-opdrachten . Dit artikel is gebaseerd op het gebruik van een PowerShell-script om aanbevelingen voor automatisch afstemmen op te halen.

Notitie

In dit artikel wordt gebruikgemaakt van de Azure Az PowerShell-module. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Belangrijk

De module PowerShell Azure Resource Manager wordt nog steeds ondersteund in Azure SQL Database, maar alle toekomstige ontwikkeling is voor de Az.Sql-module. Zie AzureRM.Sql voor deze cmdlets. De argumenten voor de opdrachten in de Az-module en in de AzureRm-modules zijn vrijwel identiek.

E-mailmeldingen automatiseren voor aanbevelingen voor automatisch afstemmen

De volgende oplossing automatiseert het verzenden van e-mailmeldingen met aanbevelingen voor automatisch afstemmen. De beschreven oplossing bestaat uit het automatiseren van de uitvoering van een PowerShell-script voor het ophalen van afstemmingsaanbevelingen met behulp van Azure Automation en automatisering van het plannen van een e-mailbezorgingstaak met Behulp van Microsoft Power Automate.

Een Azure Automation-account maken

Als u Azure Automation wilt gebruiken, moet u eerst een Automation-account maken en configureren met Azure-resources die moeten worden gebruikt voor het uitvoeren van het PowerShell-script. Zie Aan de slag met Azure Automation voor meer informatie over Azure Automation en de mogelijkheden ervan.

Volg deze stappen om een Azure Automation-account te maken via de methode voor het selecteren en configureren van een Automation-app vanuit Azure Marketplace:

  1. Meld u aan bij de Azure-portal.

  2. Klik op + Een resource maken in de linkerbovenhoek.

  3. Zoek naar 'Automation' (druk op Enter).

  4. Klik op de Automation-app in de zoekresultaten.

    Adding Azure automation

  5. Klik in het deelvenster Een Automation-account maken op Maken.

  6. Vul de vereiste gegevens in: voer een naam in voor dit Automation-account, selecteer uw Azure-abonnements-id en Azure-resources die moeten worden gebruikt voor de uitvoering van het PowerShell-script.

  7. Selecteer Voor de optie 'Azure Uitvoeren als-account maken' de optie Ja om het type account te configureren waaronder het PowerShell-script wordt uitgevoerd met behulp van Azure Automation. Zie Uitvoeren als-account voor meer informatie over accounttypen.

  8. Sluit het maken van het Automation-account door op Maken te klikken.

Tip

Noteer de naam van uw Azure Automation-account, abonnements-id en resources (zoals kopiëren en plakken in een kladblok) precies zoals is ingevoerd tijdens het maken van de Automation-app. U hebt deze informatie later nodig.

Als u verschillende Azure-abonnementen hebt waarvoor u dezelfde automatisering wilt bouwen, moet u dit proces herhalen voor uw andere abonnementen.

Azure Automation-modules bijwerken

Het PowerShell-script voor het ophalen van aanbevelingen voor automatisch afstemmen maakt gebruik van Get-AzResource - en Get-AzSqlDatabaseRecommendedAction-opdrachten waarvoor Azure Module versie 4 en hoger is vereist.

Een Azure Automation-runbook maken

De volgende stap is het maken van een Runbook in Azure Automation waarin het PowerShell-script voor het ophalen van afstemmingsaanbevelingen zich bevindt.

Volg deze stappen om een nieuw Azure Automation-runbook te maken:

  1. Open het Azure Automation-account dat u in de vorige stap hebt gemaakt.

  2. Klik in het deelvenster Automation-account op het menu-item Runbooks aan de linkerkant om een nieuw Azure Automation-runbook te maken met het PowerShell-script. Zie Een nieuw runbook maken voor meer informatie over het maken van automation-runbooks.

  3. Als u een nieuw runbook wilt toevoegen, klikt u op de menuoptie +Een runbook toevoegen en klikt u vervolgens op 'Snel maken - Een nieuw runbook maken'.

  4. Typ in het deelvenster Runbook de naam van uw runbook (voor dit voorbeeld wordt AutomaticTuningEmailAutomation gebruikt), selecteer het type runbook als PowerShell en schrijf een beschrijving van dit runbook om het doel ervan te beschrijven.

  5. Klik op de knop Maken om het maken van een nieuw runbook te voltooien.

    Add Azure automation runbook

Volg deze stappen om een PowerShell-script in het gemaakte runbook te laden:

  1. Selecteer in het deelvenster PowerShell Runbook bewerken runbooks in de menustructuur en vouw de weergave uit totdat u de naam van uw runbook ziet (in dit voorbeeld 'AutomaticTuningEmailAutomation'). Selecteer dit runbook.
  2. Kopieer op de eerste regel van het PowerShell-runbook bewerken (te beginnen met nummer 1) de volgende PowerShell-scriptcode. Dit PowerShell-script wordt geleverd om u op weg te helpen. Pas het script aan uw behoeften aan.

In de koptekst van het opgegeven PowerShell-script moet u vervangen door <SUBSCRIPTION_ID_WITH_DATABASES> uw Azure-abonnements-id. Zie De GUID van uw Azure-abonnement ophalen voor meer informatie over het ophalen van uw Azure-abonnements-id.

In het geval van verschillende abonnementen kunt u deze toevoegen als door komma's gescheiden door komma's aan de eigenschap '$subscriptions' in de koptekst van het script.

# 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

Klik op de knop Opslaan in de rechterbovenhoek om het script op te slaan. Wanneer u tevreden bent met het script, klikt u op de knop Publiceren om dit runbook te publiceren.

In het hoofdrunbookvenster kunt u ervoor kiezen om op de knop Start te klikken om het script te testen. Klik op de uitvoer om de resultaten van het uitgevoerde script weer te geven. Deze uitvoer wordt de inhoud van uw e-mail. De voorbeelduitvoer van het script kan worden weergegeven in de volgende schermopname.

Run view automatic tuning recommendations with Azure Automation

Zorg ervoor dat u de inhoud aanpast door het PowerShell-script aan te passen aan uw behoeften.

Met de bovenstaande stappen wordt het PowerShell-script voor het ophalen van aanbevelingen voor automatisch afstemmen geladen in Azure Automation. De volgende stap is het automatiseren en plannen van de e-mailbezorgingstaak.

De e-mailtaken automatiseren met Microsoft Power Automate

Als u de oplossing wilt voltooien, maakt u als laatste stap een automatiseringsstroom in Microsoft Power Automate die bestaat uit drie acties (taken):

  • 'Azure Automation - Taak maken': wordt gebruikt om het PowerShell-script uit te voeren om aanbevelingen voor automatisch afstemmen op te halen in het Azure Automation-runbook.
  • 'Azure Automation - Taakuitvoer ophalen': wordt gebruikt om uitvoer op te halen uit het uitgevoerde PowerShell-script.
  • 'Office 365 Outlook – Een e-mail verzenden': wordt gebruikt om e-mail te verzenden. E-mailberichten worden verzonden met het werk- of schoolaccount van de persoon die de stroom maakt.

Zie Aan de slag met Microsoft Power Automate voor meer informatie over de mogelijkheden van Microsoft Power Automate.

De vereiste voor deze stap is om u aan te melden voor een Microsoft Power Automate-account en om u aan te melden. Voer binnen de oplossing de volgende stappen uit om een nieuwe stroom in te stellen:

  1. Het menu-item Mijn stromen openen.
  2. Selecteer in Mijn stromen de koppeling +Maken van leeg boven aan de pagina.
  3. Klik op de koppeling 'Zoeken naar honderden connectors en triggers' onderaan de pagina.
  4. Typ 'terugkeerpatroon' in het zoekveld en selecteer 'Schema - Terugkeerpatroon' in de zoekresultaten om te plannen dat de e-mailbezorgingstaak moet worden uitgevoerd.
  5. Selecteer in het deelvenster Terugkeerpatroon in het veld Frequentie de planningsfrequentie die voor deze stroom moet worden uitgevoerd, zoals geautomatiseerde e-mail verzenden per minuut, uur, dag, week, enzovoort.

De volgende stap bestaat uit het toevoegen van drie taken (maken, uitvoer ophalen en e-mail verzenden) naar de zojuist gemaakte terugkerende stroom. Voer de volgende stappen uit om de vereiste taken toe te voegen aan de stroom:

  1. Actie maken om PowerShell-script uit te voeren om aanbevelingen voor afstemming op te halen

    • Selecteer +Nieuwe stap, gevolgd door Een actie toevoegen in het deelvenster Terugkeerstroom.
    • Typ 'automation' in het zoekveld en selecteer 'Azure Automation – Taak maken' in de zoekresultaten.
    • Configureer de taakeigenschappen in het deelvenster Taak maken. Voor deze configuratie hebt u details nodig van uw Azure-abonnements-id, resourcegroep en Automation-account die eerder zijn vastgelegd in het deelvenster Automation-account. Zie Azure Automation - Taak maken voor meer informatie over opties die beschikbaar zijn in deze sectie.
    • Voltooi het maken van deze actie door op Stroom opslaan te klikken.
  2. Een actie maken om uitvoer op te halen uit het uitgevoerde PowerShell-script

    • Selecteer +Nieuwe stap, gevolgd door Een actie toevoegen in het deelvenster Terugkeerstroom
    • Typ 'automation' in het zoekveld en selecteer 'Azure Automation – Taakuitvoer ophalen' in de zoekresultaten. Zie Azure Automation : taakuitvoer ophalen voor meer informatie over opties die beschikbaar zijn in deze sectie.
    • Vul de vereiste velden in (vergelijkbaar met het maken van de vorige taak): vul uw Azure-abonnements-id, resourcegroep en Automation-account in (zoals ingevoerd in het deelvenster Automation-account).
    • Klik in het veld Taak-id voor het menu Dynamische inhoud om weer te geven. Selecteer in dit menu de optie Taak-id.
    • Voltooi het maken van deze actie door op Stroom opslaan te klikken.
  3. Een actie maken om e-mail te verzenden met office 365-integratie

    • Selecteer +Nieuwe stap, gevolgd door Een actie toevoegen in het deelvenster Terugkeerstroom.
    • Typ 'Een e-mail verzenden' in het zoekveld en selecteer 'Office 365 Outlook - Een e-mail verzenden' in de zoekresultaten.
    • Typ in het veld Aan het e-mailadres waarnaar u de e-mailmelding moet verzenden.
    • Typ in het veld Onderwerp het onderwerp van uw e-mail, bijvoorbeeld 'E-mailmelding voor automatische afstemmingsaanmeldingen'.
    • Klik in het veld Hoofdtekst voor het menu Dynamische inhoud om weer te geven. Selecteer 'Inhoud' in dit menu onder Taakuitvoer ophalen.
    • Voltooi het maken van deze actie door op Stroom opslaan te klikken.

Tip

Als u geautomatiseerde e-mailberichten naar verschillende geadresseerden wilt verzenden, maakt u afzonderlijke stromen. Wijzig in deze extra stromen het e-mailadres van de geadresseerde in het veld Aan en de onderwerpregel voor e-mail in het veld Onderwerp. Het maken van nieuwe runbooks in Azure Automation met aangepaste PowerShell-scripts (zoals bij wijziging van de Azure-abonnements-id) maakt verdere aanpassing van geautomatiseerde scenario's mogelijk, zoals het e-mailen van afzonderlijke ontvangers bij aanbevelingen voor automatisch afstemmen voor afzonderlijke abonnementen.

In de bovenstaande stappen worden de stappen afgesloten die nodig zijn om de werkstroom voor e-mailbezorgingstaken te configureren. De volledige stroom die bestaat uit drie ingebouwde acties, wordt weergegeven in de volgende afbeelding.

View automatic tuning email notifications flow

Als u de stroom wilt testen, klikt u in de rechterbovenhoek van het stroomvenster op Nu uitvoeren.

Statistieken van het uitvoeren van de geautomatiseerde taken, met het succes van e-mailmeldingen die worden verzonden, kunnen worden weergegeven in het deelvenster Flow Analytics.

Running flow for automatic tuning email notifications

Het deelvenster Flow Analytics is handig voor het controleren van het succes van taakuitvoeringen en indien nodig voor het oplossen van problemen. In het geval van probleemoplossing wilt u mogelijk ook het Uitvoeringslogboek van het PowerShell-script bekijken dat toegankelijk is via de Azure Automation-app.

De uiteindelijke uitvoer van de geautomatiseerde e-mail lijkt op de volgende e-mail die is ontvangen na het bouwen en uitvoeren van deze oplossing:

Sample email output from automatic tuning email notifications

Door het PowerShell-script aan te passen, kunt u de uitvoer en opmaak van het geautomatiseerde e-mailbericht aanpassen aan uw behoeften.

U kunt de oplossing verder aanpassen om e-mailmeldingen te maken op basis van een specifieke afstemmingsevenement en voor meerdere geadresseerden, voor meerdere abonnementen of databases, afhankelijk van uw aangepaste scenario's.

Volgende stappen