Share via


E-mail-értesítések az automatikus finomhangoláshoz

A következőre vonatkozik: Azure SQL DatabaseFelügyelt Azure SQL-példány

Az Azure SQL Database finomhangolási javaslatait az Azure SQL Database automatikus hangolása hozza létre. Ez a megoldás folyamatosan figyeli és elemzi az adatbázisok számítási feladatait, és testre szabott hangolási javaslatokat nyújt az egyes adatbázisokhoz az indexek létrehozásával, az indexek törlésével és a lekérdezés-végrehajtási tervek optimalizálásával kapcsolatban.

Az Azure SQL Database automatikus hangolási javaslatai megtekinthetők az Azure Portalon, REST API-hívásokkalvagy T-SQL- és PowerShell-parancsokkal kérhetők le. Ez a cikk egy PowerShell-szkript használatával kéri le az automatikus finomhangolási javaslatokat.

Megjegyzés:

Ez a cikk az Azure Az PowerShell-modult használja, amely az Azure-ral való interakcióhoz ajánlott PowerShell-modul. Az Az PowerShell-modul használatának megkezdéséhez lásd az Azure PowerShell telepítését ismertető szakaszt. To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Fontos

A PowerShell Azure Resource Manager modult továbbra is támogatja az Azure SQL Database, de minden jövőbeli fejlesztés az Az.Sql modulhoz tartozik. Ezekhez a parancsmagokhoz lásd: AzureRM.Sql. Az Az modulban és az AzureRm-modulokban található parancsok argumentumai lényegében azonosak.

Automatikus finomhangolási javaslatok e-mail-értesítéseinek automatizálása

Az alábbi megoldás automatizálja az automatikus hangolási javaslatokat tartalmazó e-mail-értesítések küldését. A leírt megoldás egy PowerShell-szkript végrehajtásának automatizálását tartalmazza a hangolási javaslatok Azure Automation használatával történő lekéréséhez, valamint az e-mail-kézbesítési feladatok Microsoft Power Automate használatával történő ütemezésének automatizálását.

Azure Automation-fiók létrehozása

Az Azure Automation használatához először létre kell hoznia egy automation-fiókot, és konfigurálnia kell azt Azure-erőforrásokkal a PowerShell-szkript végrehajtásához. Az Azure Automationről és képességeiről az Azure Automation használatának első lépései című témakörben olvashat bővebben.

Kövesse az alábbi lépéseket egy Azure Automation-fiók létrehozásához az Automation-alkalmazások Azure Marketplace-ről való kiválasztásának és konfigurálásának módszerével:

  1. Log into the Azure portal.

  2. Kattintson a bal felső sarokban található "+ Erőforrás létrehozása" elemre.

  3. Keressen rá az "Automation" kifejezésre (nyomja le az Enter billentyűt).

  4. Kattintson az Automation alkalmazásra a keresési eredmények között.

    Adding Azure automation

  5. Az "Automation-fiók létrehozása" panelen kattintson a "Létrehozás" gombra.

  6. Töltse ki a szükséges információkat: adja meg az automation-fiók nevét, válassza ki az Azure-előfizetés azonosítóját és a PowerShell-szkript végrehajtásához használandó Azure-erőforrásokat.

  7. Az "Azure Futtató fiók létrehozása" beállításnál válassza az Igen lehetőséget annak a fióktípusnak a konfigurálásához, amely alatt a PowerShell-szkript fut az Azure Automation segítségével. A fióktípusokról további információt a futtató fiók című témakörben talál.

  8. Zárja be az automation-fiók létrehozását a Létrehozás gombra kattintva.

Tipp.

Rögzítse az Azure Automation-fiók nevét, előfizetés-azonosítóját és erőforrásait (például a jegyzettömbbe való másolást) pontosan úgy, ahogyan az Automation-alkalmazás létrehozásakor be van írva. Később szüksége lesz ezekre az információkra.

Ha több Olyan Azure-előfizetése van, amelyhez ugyanazt az automatizálást szeretné létrehozni, akkor ezt a folyamatot meg kell ismételnie a többi előfizetés esetében.

Azure Automation-modulok frissítése

Az automatikus hangolási javaslat lekéréséhez használt PowerShell-szkript a Get-AzResource és a Get-AzSqlDatabaseRecommendedAction parancsokat használja, amelyekhez az Azure-modul 4-es vagy újabb verziójára van szükség.

Azure Automation-runbook létrehozása

A következő lépés egy Runbook létrehozása az Azure Automationben, amelyben a hangolási javaslatok lekérésére szolgáló PowerShell-szkript található.

Kövesse az alábbi lépéseket egy új Azure Automation-runbook létrehozásához:

  1. Az előző lépésben létrehozott Azure Automation-fiók elérése.

  2. Az Automation-fiók panelen kattintson a bal oldali "Runbookok" menüelemre egy új Azure Automation-runbook PowerShell-szkripttel való létrehozásához. Az automatizálási runbookok létrehozásával kapcsolatos további információkért lásd : Új runbook létrehozása.

  3. Új runbook hozzáadásához kattintson a "+Runbook hozzáadása" menüpontra, majd a "Gyors létrehozás – Új runbook létrehozása" elemre.

  4. A Runbook panelen írja be a runbook nevét (ebben a példában az "AutomaticTuningEmailAutomation" kifejezést használja), válassza ki a runbook típusát PowerShell-ként, és írja le ennek a runbooknak a leírását a céljának leírásához.

  5. Kattintson a Létrehozás gombra az új runbook létrehozásához.

    Add Azure automation runbook

Az alábbi lépéseket követve betölthet egy PowerShell-szkriptet a létrehozott runbookba:

  1. A "PowerShell-runbook szerkesztése" panelen válassza a "RUNBOOKS" elemet a menüfán, és bontsa ki a nézetet, amíg meg nem jelenik a runbook neve (ebben a példában az "AutomaticTuningEmailAutomation"). Válassza ki ezt a runbookot.
  2. A "PowerShell-runbook szerkesztése" első sorában (az 1-es számtól kezdve) másolja be a következő PowerShell-szkriptkódot. Ez a PowerShell-szkript az első lépésekhez érhető el. Módosítsa a szkriptet az igényeinek megfelelően.

A megadott PowerShell-szkript fejlécében le kell cserélnie <SUBSCRIPTION_ID_WITH_DATABASES> az Azure-előfizetés azonosítóját. Az Azure-előfizetés azonosítóinak lekéréséről további információt az Azure-előfizetés GUID-azonosítóinak lekérése című témakörben talál.

Több előfizetés esetén vesszővel tagoltként is hozzáadhatja őket a szkript fejlécében található "$subscriptions" tulajdonsághoz.

# 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

A szkript mentéséhez kattintson a jobb felső sarokban található "Mentés" gombra. Ha elégedett a szkripttel, kattintson a "Közzététel" gombra a runbook közzétételéhez.

A fő runbook panelen a "Start" gombra kattintva tesztelheti a szkriptet. Kattintson a "Kimenet" gombra a végrehajtott szkript eredményeinek megtekintéséhez. Ez a kimenet lesz az e-mail tartalma. A szkript mintakimenete az alábbi képernyőképen tekinthető meg.

Run view automatic tuning recommendations with Azure Automation

Győződjön meg arról, hogy a PowerShell-szkript igényeinek megfelelően testre szabja a tartalmat.

A fenti lépésekkel az automatikus hangolási javaslatok lekéréséhez szükséges PowerShell-szkript betöltődik az Azure Automationbe. A következő lépés az e-mail-kézbesítési feladat automatizálása és ütemezése.

Az e-mail-feladatok automatizálása a Microsoft Power Automate-lel

A megoldás befejezéséhez az utolsó lépésként hozzon létre egy automatizálási folyamatot a Microsoft Power Automate-ben, amely három műveletből (feladatból) áll:

  • "Azure Automation – Feladat létrehozása" – a PowerShell-szkript végrehajtására szolgál az Azure Automation-runbook automatikus finomhangolási javaslatainak lekéréséhez.
  • "Azure Automation – Feladatkimenet lekérése" – a kimenet lekérésére szolgál a végrehajtott PowerShell-szkriptből.
  • "Office 365 Outlook – E-mail küldése" – e-mailek küldésére szolgál. A rendszer az e-maileket a folyamatot létrehozó személy munkahelyi vagy iskolai fiókjával küldi el.

A Microsoft Power Automate képességeiről a Microsoft Power Automate használatának első lépései című témakörben olvashat bővebben.

Ennek a lépésnek az előfeltétele, hogy regisztráljon egy Microsoft Power Automate-fiókra , és jelentkezzen be. Ha a megoldáson belül van, kövesse az alábbi lépéseket egy új folyamat beállításához:

  1. Hozzáférés a "Saját folyamatok" menüponthoz.
  2. A Saját folyamatok területen válassza a lap tetején található "+Létrehozás üresből" hivatkozást.
  3. Kattintson a lap alján található "Több száz összekötő és eseményindító keresése" hivatkozásra.
  4. A keresőmezőbe írja be az "ismétlődés" kifejezést, majd a keresési eredmények közül válassza az "Ütemezés – Ismétlődés" lehetőséget az e-mail-kézbesítési feladat futtatásának ütemezéséhez.
  5. A Gyakoriság mező Ismétlődés paneljén válassza ki a végrehajtáshoz szükséges ütemezési gyakoriságot, például automatikus e-mail küldése percenként, óránként, nappal, héten stb.

A következő lépés három feladat hozzáadása (létrehozás, kimenet lekérése és e-mail küldése) az újonnan létrehozott ismétlődő folyamathoz. A szükséges feladatok folyamathoz való hozzáadásához kövesse az alábbi lépéseket:

  1. PowerShell-szkript végrehajtására irányuló művelet létrehozása hangolási javaslatok lekéréséhez

    • Válassza a "+Új lépés", majd a "Művelet hozzáadása" lehetőséget az Ismétlődés folyamat panelen.
    • A keresőmezőbe írja be az "automation" kifejezést, és válassza az "Azure Automation – Feladat létrehozása" lehetőséget a keresési eredmények közül.
    • A Feladat létrehozása panelen konfigurálja a feladat tulajdonságait. Ehhez a konfigurációhoz szüksége lesz az Azure-előfizetés azonosítójára, az erőforráscsoportra és az Automation-fiókra korábban az Automation-fiók panelen rögzített adataira. Az ebben a szakaszban elérhető lehetőségekről az Azure Automation – Feladat létrehozása című témakörben olvashat bővebben.
    • A művelet létrehozásához kattintson a "Folyamat mentése" gombra.
  2. Művelet létrehozása a kimenet lekéréséhez a végrehajtott PowerShell-szkriptből

    • Válassza a "+Új lépés", majd a "Művelet hozzáadása" lehetőséget az Ismétlődés folyamat panelen
    • A keresőmezőbe írja be az "automation" kifejezést, és válassza az "Azure Automation – Feladat kimenetének lekérése" lehetőséget a keresési eredmények közül. Az ebben a szakaszban elérhető lehetőségekről az Azure Automation – Feladat kimenetének lekérése című témakörben olvashat bővebben.
    • Töltse ki a szükséges mezőket (hasonlóan az előző feladat létrehozásához) – töltse ki az Azure-előfizetés azonosítóját, az erőforráscsoportot és az Automation-fiókot (az Automation-fiók panelen megadott módon).
    • Kattintson a "Dinamikus tartalom" menü "Feladatazonosító" mezőjébe a megjelenítéshez. Ebben a menüben válassza a "Feladatazonosító" lehetőséget.
    • A művelet létrehozásához kattintson a "Folyamat mentése" gombra.
  3. Művelet létrehozása e-mailek küldésére az Office 365-integrációval

    • Válassza a "+Új lépés", majd a "Művelet hozzáadása" lehetőséget az Ismétlődés folyamat panelen.
    • A keresőmezőbe írja be az "e-mail küldése" kifejezést, és válassza az "Office 365 Outlook – E-mail küldése" lehetőséget a keresési eredmények közül.
    • A "Címzett" mezőbe írja be azt az e-mail-címet, amelyre az értesítési e-mailt el kell küldenie.
    • A "Tárgy" mezőbe írja be az e-mail tárgyát, például "Javaslatok automatikus finomhangolása e-mail értesítés".
    • Kattintson a "Dinamikus tartalom" menü "Törzs" mezőjébe a megjelenítéshez. A menü "Feladat kimenetének lekérése" területén válassza a "Tartalom" lehetőséget.
    • A művelet létrehozásához kattintson a "Folyamat mentése" gombra.

Tipp.

Ha automatikus e-maileket szeretne küldeni a különböző címzetteknek, hozzon létre külön folyamatokat. Ezekben a további folyamatokban módosítsa a címzett e-mail-címét a "Címzett" mezőben, és az e-mail tárgysorát a "Tárgy" mezőben. Új runbookok létrehozása az Azure Automationben testre szabott PowerShell-szkriptekkel (például az Azure-előfizetés azonosítójának módosításával) lehetővé teszi az automatikus forgatókönyvek további testreszabását, például a különálló címzettek e-mailezését a különálló előfizetésekre vonatkozó automatikus hangolási javaslatokról.

A fentiek az e-mail-kézbesítési feladat munkafolyamatának konfigurálásához szükséges lépéseket ismertetik. A három létrehozott műveletből álló teljes folyamat az alábbi képen látható.

View automatic tuning email notifications flow

A folyamat teszteléséhez kattintson a folyamatpanel jobb felső sarkában található "Futtatás most" elemre.

Az automatizált feladatok futtatásának statisztikái, amelyek az elküldött e-mail-értesítések sikerességét mutatják, a Flow analytics panelen tekinthetők meg.

Running flow for automatic tuning email notifications

A Flow Analytics panel a feladatok végrehajtásának sikerességét figyeli, és ha szükséges a hibaelhárításhoz. Hibaelhárítás esetén érdemes lehet megvizsgálni az Azure Automation alkalmazáson keresztül elérhető PowerShell-szkript végrehajtási naplóját is.

Az automatizált e-mail végső kimenete a megoldás létrehozása és futtatása után kapott alábbi e-mailhez hasonlóan néz ki:

Sample email output from automatic tuning email notifications

A PowerShell-szkript módosításával igény szerint módosíthatja az automatizált e-mail kimenetét és formázását.

A megoldást úgy is testre szabhatja, hogy e-mail-értesítéseket készítsen egy adott hangolási esemény alapján, illetve több címzettnek több előfizetéshez vagy adatbázishoz, az egyéni forgatókönyveknek megfelelően.

További lépések