Share via


Notifiche tramite posta elettronica per l'ottimizzazione automatica

Si applica a:Database SQL di AzureIstanza gestita di SQL di Azure

I suggerimenti di ottimizzazione per i database SQL di Azure vengono generati dall'opzione di ottimizzazione automatica per database SQL di Azure. Questa soluzione monitorizza e analizza costantemente i carichi di lavoro dei database e offre suggerimenti di ottimizzazione personalizzati per ogni database inerenti, ad esempio, alla creazione dell'indice, all'eliminazione dell'indice e all'ottimizzazione dei piani di esecuzione delle query.

I consigli di ottimizzazione automatica per database SQL di Azure possono essere visualizzati nel portale di Azure, recuperati con chiamate all'API REST oppure usando comandi di T-SQL e PowerShell. Questo articolo si basa sull'utilizzo di uno script di PowerShell per recuperare suggerimenti di ottimizzazione automatica.

Nota

Questo articolo usa il modulo Azure Az PowerShell, che è il modulo di PowerShell consigliato per l'interazione con Azure. Per iniziare a usare il modulo Az PowerShell, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Importante

Il modulo Azure Resource Manager di PowerShell è ancora supportato da Database SQL di Azure, ma tutte le attività di sviluppo future sono incentrate sul modulo Az.Sql. Per informazioni su questi cmdlet, vedere AzureRM.Sql. Gli argomenti per i comandi nei moduli Az e AzureRm sono sostanzialmente identici.

Automatizzare le notifiche tramite posta elettronica per i suggerimenti di ottimizzazione automatica

La soluzione seguente consente di automatizzare l'invio di notifiche tramite posta elettronica contenenti suggerimenti di ottimizzazione automatica. La soluzione descritta consiste nell'esecuzione automatica di uno script di PowerShell per recuperare i suggerimenti di ottimizzazione usando Automazione di Azure e automatizzare la pianificazione di un processo di recapito di posta elettronica usando Microsoft Power Automate.

Creare un account di Automazione di Azure

Per usare Automazione di Azure, il primo passaggio consiste nel creare un account di automazione e configurarlo con le risorse di Azure da usare per l'esecuzione dello script di PowerShell. Per altre informazioni su Automazione di Azure e le relative funzionalità, vedere Introduzione ad Automazione di Azure.

Seguire questa procedura per creare un account di Automazione di Azure tramite il metodo di selezione e configurazione dell'app di automazione dal Marketplace di Azure:

  1. Accedere al portale di Azure.

  2. Fare clic su "+ Crea una risorsa" nell'angolo superiore sinistro.

  3. Cercare "Automazione" (premere Invio).

  4. Fare clic sull'app Automazione nei risultati della ricerca.

    Adding Azure automation

  5. Nel riquadro "Crea un account di automazione", fare clic su "Crea".

  6. Inserire le informazioni necessarie: immettere un nome per questo account di automazione e selezionare le risorse di Azure e l'ID della sottoscrizione di Azure da usare per l'esecuzione dello script di PowerShell.

  7. Per l'opzione "Crea un account RunAs di Azure", selezionare per configurare il tipo di account in cui viene eseguito lo script di PowerShell con l'aiuto di Automazione di Azure. Per altre informazioni sui tipi di account, vedere Account RunAs.

  8. Terminare la creazione dell'account di automazione facendo clic su Crea.

Suggerimento

Annotare il nome dell'account di Automazione di Azure, l'ID della sottoscrizione e le risorse (ad esempio, copiandoli e incollandoli in un blocco note), esattamente come sono stati immessi durante la creazione dell'app Automazione. Queste informazioni saranno necessarie più avanti.

Se si hanno più sottoscrizioni di Azure per le quali si vuole creare la stessa automazione, è necessario ripetere questo processo anche per le altre sottoscrizioni.

Aggiornare i moduli di Automazione di Azure

Lo script di PowerShell per riprendere il consiglio di ottimizzazione automatica usa i comandi Get-AzResource e Get-AzSqlDatabaseRecommendedAction per i quali è necessario il modulo di Azure versione 4 o una versione successiva.

Creare un runbook di Automazione di Azure

Il passaggio successivo consiste nella creazione di un runbook in Automazione di Azure all'interno del quale si trova lo script di PowerShell per il recupero dei suggerimenti di ottimizzazione.

Per creare un nuovo runbook di Automazione di Azure, seguire questa procedura:

  1. Accedere all'account di Automazione di Azure creato nel passaggio precedente.

  2. Nel riquadro dell'account di automazione fare clic sulla voce di menu "Runbook" sul lato sinistro per creare un nuovo runbook di Automazione di Azure con lo script di PowerShell. Per altre informazioni sulla creazione di runbook di automazione, vedere Creare un nuovo runbook.

  3. Per aggiungere un nuovo runbook, fare clic sull'opzione di menu "+Aggiungi un runbook", quindi fare clic su "Creazione rapida: crea un nuovo runbook".

  4. Nel riquadro del runbook, digitare il nome del runbook (ai fini di questo esempio viene usato "AutomaticTuningEmailAutomation"), selezionare il tipo di runbook PowerShell e scrivere una descrizione di questo runbook per illustrarne lo scopo.

  5. Fare clic sul pulsante Crea per completare la creazione del nuovo runbook.

    Add Azure automation runbook

Seguire questa procedura per caricare uno script di PowerShell nel runbook creato:

  1. Nel riquadro "Modifica runbook di PowerShell", selezionare"RUNBOOK" nella struttura del menu ed espandere la visualizzazione finché non appare il nome del runbook (in questo esempio "AutomaticTuningEmailAutomation"). Selezionare questo runbook.
  2. Nella prima riga di "Modifica runbook di PowerShell" (a partire dal numero 1), copiare e incollare il seguente codice di script di PowerShell. Questo script di PowerShell viene fornito così com'è per iniziare. Modificare lo script in base alle esigenze.

Nell'intestazione dello script di PowerShell fornito è necessario sostituire <SUBSCRIPTION_ID_WITH_DATABASES> con l'ID della sottoscrizione di Azure. Per informazioni su come recuperare l'ID della sottoscrizione di Azure, vedere Getting your Azure Subscription GUID (Recupero del codice GUID della sottoscrizione).

In caso di più sottoscrizioni, è possibile aggiungerle delimitate da virgole alla proprietà "$subscriptions" nell'intestazione dello 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

Per salvare lo script, fare clic sul pulsante "Salva" nell'angolo superiore destro. Quando si è soddisfatti dello script, fare clic sul pulsante "Pubblica" per pubblicare il runbook.

Nel riquadro principale del runbook, è possibile scegliere di fare clic sul pulsante "Avvia" per testare lo script. Per visualizzare i risultati dello script eseguito, fare clic su "Output". Questo output diventerà il contenuto del messaggio di posta elettronica. L'output dello script di esempio può essere visualizzato nella schermata seguente.

Run view automatic tuning recommendations with Azure Automation

Modificare il contenuto personalizzando lo script di PowerShell in base alle esigenze.

Con la procedura descritta sopra viene caricato in Automazione di Azure lo script di PowerShell che consente di riprendere i consigli di ottimizzazione automatica. Il passaggio successivo consiste nell'automatizzazione e nella pianificazione del processo di recapito della posta elettronica.

Automatizzare i processi di posta elettronica con Microsoft Power Automate

Per completare la soluzione, come ultimo passaggio, creare un flusso di automazione in Microsoft Power Automate composto da tre azioni (processi):

  • "Automazione di Azure - Creare il processo": consente di eseguire lo script di PowerShell per riprendere i consigli di ottimizzazione automatica nel runbook di Automazione di Azure.
  • "Automazione di Azure - Ottenere l’output del processo": consente di riprendere l'output dello script di PowerShell eseguito.
  • "Office 365 Outlook - Inviare un messaggio di posta elettronica": consente di inviare un messaggio di posta elettronica. I messaggi di posta elettronica vengono inviati usando l'account aziendale o dell’istituto di istruzione dell'utente che ha creato il flusso.

Per saperne di più sulle funzionalità di Microsoft Power Automate, vedere Introduzione di Microsoft Power Automate.

I prerequisiti per questo passaggio comprendono la sottoscrizione di un account Microsoft Power Automate e l'accesso allo stesso. Dopo aver eseguito l'accesso alla soluzione, seguire questa procedura per configurare un nuovo flusso:

  1. Accedere alla voce di menu "Flussi personali".
  2. In Flussi personali, selezionare il collegamento "+Crea da zero" nella parte superiore della pagina.
  3. Fare clic sul collegamento "Cerca centinaia di connettori e trigger" nella parte inferiore della pagina.
  4. Nel campo di ricerca, digitare "ricorrenza", quindi selezionare "Pianificazione - Ricorrenza" nei risultati della ricerca per pianificare l'esecuzione del processo di recapito della posta elettronica.
  5. Nel campo Frequenza del riquadro Ricorrenza selezionare la frequenza di pianificazione per l'esecuzione del flusso, ad esempio per inviare messaggi di posta elettronica automatici ogni minuto, ora, giorno, settimana e così via.

Il passaggio successivo consiste nell'aggiunta dei tre processi (creazione, acquisizione dell'output e invio del messaggio di posta elettronica) al flusso ricorrente appena creato. Per aggiungere al flusso i tre processi richiesti, seguire questa procedura:

  1. Creare l'azione per eseguire lo script di PowerShell per recuperare i suggerimenti di ottimizzazione

    • Selezionare "+Nuovo passaggio", seguito da "Aggiungi un'azione" nel riquadro del flusso Ricorrenza.
    • Nel campo di ricerca digitare "automazione" e selezionare"Automazione di Azure - Creare il processo" nei risultati della ricerca.
    • Nel riquadro di creazione del processo configurare le proprietà del processo. Per questa configurazione saranno necessari l'ID della sottoscrizione di Azure, il gruppo di risorse e l'account di Automazione precedentemente annotati dal riquadro dell'account di Automazione. Per altre informazioni sulle opzioni disponibili in questa sezione, vedere Azure Automation - Create Job (Automazione di Azure - Creare il processo).
    • Completare la creazione di questa azione facendo clic su "Salva flusso".
  2. Creare un'azione per recuperare l'output dallo script di PowerShell eseguito

    • Selezionare "+Nuovo passaggio", seguito da "Aggiungi un'azione" nel riquadro del flusso Ricorrenza.
    • Nel campo di ricerca digitare "automazione" e selezionare"Automazione di Azure – Ottenere l’output del processo" nei risultati della ricerca. Per altre informazioni sulle opzioni disponibili in questa sezione, vedere Azure Automation – Get job output (Automazione di Azure - Ottenere l'output del processo).
    • Compilare i campi richiesti (simile alla creazione del processo precedente): inserire l'ID della sottoscrizione Azure, il gruppo di risorse e un account di automazione (come specificati nel riquadro dell'account di automazione).
    • Fare clic all'interno del campo "ID processo" per consentire la visualizzazione del menu "Contenuto dinamico". In questo menu, selezionare l'opzione "ID processo".
    • Completare la creazione di questa azione facendo clic su "Salva flusso".
  3. Creare un’azione per inviare messaggi di posta elettronica mediante l'integrazione di Office 365

    • Selezionare "+Nuovo passaggio", seguito da "Aggiungi un'azione" nel riquadro del flusso Ricorrenza.
    • Nel campo di ricerca digitare "inviare un messaggio di posta elettronica" e selezionare "Office 365 Outlook - Inviare un messaggio di posta elettronica" nei risultati della ricerca.
    • Nel campo "A" digitare l'indirizzo di posta elettronica a cui inviare il messaggio di notifica.
    • Nel campo "Oggetto" digitare l'oggetto del messaggio di posta elettronica, ad esempio "Notifica tramite posta elettronica dei suggerimenti di ottimizzazione automatica".
    • Fare clic all'interno del campo "Corpo" per consentire la visualizzazione del menu "Contenuto dinamico". In questo menu, sotto "Ottenere l’output del processo", selezionare "Contenuto".
    • Completare la creazione di questa azione facendo clic su "Salva flusso".

Suggerimento

Per inviare messaggi di posta elettronica automatizzati a destinatari diversi, creare flussi separati. In questi flussi aggiuntivi, modificare l'indirizzo email del destinatario nel campo "A" e la riga dell'oggetto dell’email nel campo "Oggetto". La creazione di nuovi runbook in Automazione di Azure con script di PowerShell personalizzati (ad esempio, modificando l'ID della sottoscrizione di Azure) consente un'ulteriore personalizzazione degli scenari automatizzati, come ad esempio l'invio di messaggi di posta elettronica a destinatari separati in merito ai suggerimenti di ottimizzazione automatica per sottoscrizioni separate.

Si è così conclusa la procedura per configurare il flusso di lavoro del processo di recapito di posta elettronica. Nell'immagine seguente è illustrato il flusso intero costituito dalle tre azioni create.

View automatic tuning email notifications flow

Per testare il flusso, fare clic su "Esegui ora" nell'angolo superiore destro all'interno del riquadro di flusso.

Le statistiche di esecuzione dei processi automatizzati, con esito positivo delle notifiche di posta elettronica inviate, possono essere visualizzate nel riquadro Analisi di flusso.

Running flow for automatic tuning email notifications

Il riquadro Analisi di flusso è utile per monitorare l'esito delle esecuzioni dei processi e, se necessario, per risolvere eventuali problemi. Qualora sia necessario risolvere un problema, è anche possibile esaminare il log di esecuzione dello script di PowerShell accessibile tramite l'app Automazione di Azure.

L'output finale del messaggio di posta elettronica automatizzato è simile al seguente messaggio di posta elettronica ricevuto dopo aver compilato ed eseguito questa soluzione:

Sample email output from automatic tuning email notifications

Modificando lo script di PowerShell è possibile modificare l'output e la formattazione del messaggio di posta elettronica automatizzato in base alle proprie esigenze.

In base agli scenari personalizzati, è possibile anche personalizzare ulteriormente la soluzione in modo da creare notifiche tramite posta elettronica basate su uno specifico evento di ottimizzazione.

Passaggi successivi