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

A következőkre vonatkozik:Azure SQL DatabaseAzure SQL Managed Instance

Az Azure SQL Database finomhangolási javaslatait az Azure SQL Database automatikus finomhangoláshozza 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 Portal, REST API--hívásokkal, vagy T-SQL- és PowerShell- parancsokkal. Ez a cikk egy PowerShell-szkript használatával kéri le az automatikus finomhangolási javaslatokat.

Jegyzet

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 tekintse meg Az Azure PowerShell-telepítése című témakört. Ha szeretné megtudni, hogyan lehet áttérni az Az PowerShell modulra, tekintse meg a Az Azure PowerShell migrálása az AzureRM-ről az Az-re.

Fontos

A PowerShell Azure Resource Manager (AzureRM) modul 2024. február 29-én használaton kívül lett helyezve. Minden jövőbeli fejlesztésnek az Az.Sql modult kell használnia. Javasoljuk a felhasználóknak, hogy migráljanak az AzureRM-ből az Az PowerShell-modulba a folyamatos támogatás és frissítések biztosítása érdekében. Az AzureRM-modult a továbbiakban nem tartjuk karban vagy támogatjuk. Az Az PowerShell-modulban és az AzureRM-modulokban található parancsok argumentumai lényegében azonosak. A kompatibilitásukról további információt az új Az PowerShell-modul bemutatása című témakörben talál.

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 Automationhasználatával történő lekéréséhez, valamint az e-mail-kézbesítési feladatok ütemezésének automatizálását Microsoft Power Automatehasználatával.

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 további információt az Azure Automation használatának első lépései című témakörben talál.

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. Jelentkezzen be az Azure portálra.

  2. Válassza a + Erőforrás létrehozása lehetőséget az erőforrás menüjében.

  3. Keresse meg az Automationt.

  4. Válassza ki az Automation alkalmazást a keresési eredmények között.

    Képernyőkép az Azure Portalról, amely az Automationt keresi.

  5. Az "Automation-fiók létrehozása" panelen válassza a Létrehozás lehetőséget.

  6. Válassza ki a PowerShell-szkript végrehajtásához használni kívánt előfizetést és erőforráscsoportot. Adja meg az automatizálási fiók nevét.

  7. Válassza a Speciális lehetőséget. Ellenőrizze, hogy a Rendszer hozzárendelt be van-e jelölve, így az Azure-erőforrásokhoz való hitelesítés érdekében egy rendszer által hozzárendelt felügyelt identitás (SAMI) létrejön.

  8. Válassza a Címkék lehetőséget. Fontolja meg az Azure-címkék használatát. A "Tulajdonos" vagy a "CreatedBy" címke például azonosítja, hogy ki hozta létre az erőforrást, és a "Környezet" címkével azonosíthatja, hogy ez az erőforrás éles környezetben van-e, fejlesztés alatt áll-e stb. További információ: Az Azure-erőforrások elnevezési és címkézési stratégiájának fejlesztése.

  9. Válassza a Véleményezés+Létrehozás lehetőséget.

  10. Fejezze be az automatizálási fiók létrehozását a Létrehozás gombra kattintva.

Azure-szerepkörök hozzárendelése a rendszer által hozzárendelt felügyelt identitásfiókhoz

Az Automation-fiókok a rendszer által hozzárendelt felügyelt identitással jogkivonatokat szerezhetnek be a Microsoft Entra ID által védett egyéb erőforrásokhoz, például az Azure SQL Database-hez. Ezek a tokenek nem képviselik az alkalmazás adott felhasználóit. Ehelyett az erőforráshoz hozzáférő alkalmazást jelölik. Ebben az esetben például a token egy Automation-fiókot képvisel.

Az Azure Automation-runbook létrehozása előtt fontos, hogy a minimális jogosultság elvét követve megfelelő szintű engedélyeket adjon az automation-fióknak. Ha rendszer által hozzárendelt felügyelt identitást használ, az SQL DB közreműködői és SQL Server-közreműködői szerepköreinek hozzáadása az SAMI-hez elegendő az Azure SQL Database-feladatok automatizálásához. A legtöbb forgatókönyv esetében, ha az automatizálás csak meghatározott adatbázisokat céloz meg, használja az erőforráscsoportszintű hatókört. Ha egy teljes előfizetésen keresztül kell működnie, használja az előfizetési szintű hatókört.

Az alábbi példa az Azure PowerShell használatával rendeli hozzá az aktuális előfizetésben lévő SQL DB-közreműködői szerepkört a rendszer által hozzárendelt felügyelt identitásfiókhoz.

$roleAssignmentParams = @{
     ObjectId = "<automation-Identity-object-id>"
     Scope = "/subscriptions/<subscription-id>"
     RoleDefinitionName = "SQL DB Contributor"
}

New-AzRoleAssignment @roleAssignmentParams

Ha ezeket a szerepköröket egy rendszer által hozzárendelt felügyelt identitáshoz szeretné hozzáadni az Azure Portalon, kövesse az alábbi lépéseket:

  1. Jelentkezzen be az Azure portálra.
  2. Keresse meg az újonnan létrehozott Azure Automation-fiókot.
  3. A Fiókbeállítások területen válassza az Identitás lehetőséget.
  4. Az Engedélyek területen válassza az Azure-szerepkör-hozzárendelések mezőt.
  5. Válassza a Szerepkör-hozzárendelés hozzáadása (előzetes verzió) lehetőséget.
  6. A Hatókör legördülő listában válassza ki azokat az erőforrásokat, amelyekre a szerepkör-hozzárendelés vonatkozik – Hatókör, előfizetés, erőforráscsoport és szerepkör.
  7. A Szerepkör legördülő listában válasszon ki egy szerepkört SQL DB-közreműködőként.
  8. Válassza az Mentésgombot.

Ismételje meg a szerepkör-hozzárendelés hozzáadása lépés lépéseit az SQL Server közreműködői szerepkörének hozzáadásához.

Borravaló

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ére szolgáló PowerShell-szkript Get-AzResource és Get-AzSqlDatabaseRecommendedAction parancsokat használ, amelyekhez az Azure Module 4-es vagy újabb verziója szükséges.

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 a bal oldalon található Runbookok menüpontot választva hozzon létre egy új Azure Automation-runbookot a PowerShell-szkripttel. Ha többet szeretne megtudni az automatizálási runbookok létrehozásáról, olvassa el az Új runbook létrehozásacímű részletet.
  3. Új runbook hozzáadásához válassza a +Runbook hozzáadása menüt, majd a Gyors létrehozás – Új runbook létrehozása lehetőséget.
  4. A Runbook panelen írja be a runbook nevét (ebben a példában az AutomaticTuningEmailAutomation parancsmagot 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 forgatókönyv létrehozásának befejezéséhez.

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 lehetőséget a menüfán, és bontsa ki a nézetet, amíg meg nem jelenik a runbook neve (ebben a példában : AutomaticTuningEmailAutomation). Válassza ki ezt az útmutatót.
  2. A "PowerShell runbook szerkesztése" első sorában (az 1-es számmal kezdve) illessze be a következő PowerShell szkript kódot. Ez a PowerShell-szkript as-is érhető el az első lépésekhez. Módosítsa a szkriptet az igényeinek megfelelően.

A megadott PowerShell-szkript fejlécében cserélje ki a "<SUBSCRIPTION_ID_WITH_DATABASES>"-t az Azure-előfizetésének azonosítójára. Az Azure-előfizetés azonosítóinak lekéréséről további információt Az Azure-előfizetés GUID-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 válassza a Mentés lehetőséget. Ha elégedett a szkripttel, és a Runbook közzétételéhez válassza a Közzététel lehetőséget.

A fő runbook panelen választhatja a Start lehetőséget a szkript teszteléséhez . Válassza a Kimenet lehetőséget a végrehajtott szkript eredményeinek megtekintéséhez. Ez a kimenet lesz az e-mail tartalma.

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ához használt eszköz az automatikus hangolási javaslatok lekérésére az Azure Automation-runbookban.
  • Az Azure Automation – Feladat kimenetének lekérése – a kimenet lekérésére szolgál a végrehajtott PowerShell-szkriptből.
  • Az Office 365 Outlook – E-mail küldése – az 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 további információt A Microsoft Power Automatehasználatának első lépései című témakörben talál.

Ennek a lépésnek az előfeltétele a Microsoft Power Automate-fiók regisztrálása és a bejelentkezés. A megoldáson belül az alábbi lépéseket követve állítson be egy új folyamatot:

  1. Hozzáférés a Saját folyamatok menüelemhez.
  2. A Saját folyamatok területen válassza a +Létrehozás a semmiből lehetőséget az oldal tetején.
  3. Válassza a több száz összekötőt és eseményindítót kereső hivatkozást.
  4. A keresőmezőbe írja be az ismétlődés szót, és válassza az Ütemezés – Ismétlődés a keresési eredmények közül 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 (létrehozás, kimenet lekérése és e-mail küldése) hozzáadása 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

    1. Válassza az +Új lépés, majd a Művelet hozzáadása az Ismétlődés folyamat panelen lehetőséget.
    2. A keresőmezőbe írja be az automatizálást , és válassza az Azure Automation – Feladat létrehozása lehetőséget a keresési eredményekből.
    3. A Feladat létrehozása panelen konfigurálja a feladat tulajdonságait. Ehhez a konfigurációhoz az Azure-előfizetés azonosítójának, az erőforráscsoportnak és az Automation-fióknak az Automation-fiók paneljénkorábban rögzített adataira van szüksége. Az ebben a szakaszban elérhető lehetőségekről további információt Azure Automation – Feladat létrehozásacímű témakörben talál.
    4. Válassza a Folyamat mentése lehetőséget.
  2. Hozzon létre egy műveletet a kimenet lekéréséhez a végrehajtott PowerShell-szkriptből.

    1. Válassza az +Új lépés lehetőséget, majd a Művelet hozzáadása lehetőséget az Ismétlődés folyam panelen
    2. A keresőmezőbe írja be az automatizálást , és válassza az Azure Automation – Feladat kimenetének lekérése a keresési eredményekből. Az ebben a szakaszban elérhető lehetőségekről további információt az Azure Automation – Feladatkimenet lekérésecímű témakörben talál.
    3. 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).
    4. Válassza ki a dinamikus tartalom menü feladatazonosítóját a mezőn belül. Ebben a menüben válassza a Feladatazonosító lehetőséget.
    5. Válassza a Folyamat mentése lehetőséget.
  3. Művelet létrehozása e-mailek küldésére az Office 365-integrációval

    1. Válassza az +Új lépés, majd a Művelet hozzáadása az Ismétlődés folyamat panelen lehetőséget.
    2. A keresőmezőbe írja be az e-mail küldése, majd válassza ki az Office 365 Outlook – E-mail küldése lehetőséget a keresési eredmények közül.
    3. A Címzett mezőbe írja be azt az e-mail-címet, amelyre az értesítési e-mailt el kell küldenie.
    4. 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".
    5. Válassza ki a Mező lehetőséget a dinamikus tartalom menü megjelenítéséhez. Ebben a menüben a Feladat kimenetének lekérése csoportban válassza a Tartalom lehetőséget.
    6. Válassza a Folyamat mentése lehetőséget.

Borravaló

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 testreszabott PowerShell-szkriptekkel (például az Azure-előfizetés azonosítójának módosításával) lehetővé teszi az automatizált forgatókönyvek további testreszabását, például a különálló címzettek e-mailben történő elküldését a különálló előfizetések automatikus finomhangolási javaslataival.

Az előző lépések konfigurálják az e-mail-kézbesítési feladat munkafolyamatát. A három létrehozott műveletből álló teljes folyamat az alábbi képen látható.

A folyamat teszteléséhez válassza a Futtatás most lehetőséget. 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.

A Flow analytics panel a feladatok végrehajtásának sikerességét figyeli, és szükség esetén 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:

Képernyőkép a Microsoft Outlookról az e-mail-értesítések automatikus finomhangolásából származó minta e-mail-kimenetről.

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.