Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:Azure SQL Database
Azure 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.
Opmerking
In dit artikel wordt de Azure Az PowerShell-module gebruikt. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Zie Azure PowerShell-installeren om aan de slag te gaan met de Az PowerShell-module. Om te leren hoe u naar de Az PowerShell-module kunt migreren, zie Migrate Azure PowerShell from AzureRM to Az.
Belangrijk
De Module PowerShell Azure Resource Manager (AzureRM) is afgeschaft op 29 februari 2024. Voor alle toekomstige ontwikkeling moet de Az.Sql-module worden gebruikt. Gebruikers wordt aangeraden om van AzureRM naar de Az PowerShell-module te migreren om ondersteuning en updates te garanderen. De AzureRM-module wordt niet meer onderhouden of ondersteund. De argumenten voor de opdrachten in de Az PowerShell-module en in de AzureRM-modules zijn aanzienlijk identiek. Zie Introductie van de nieuwe Az PowerShell-modulevoor meer informatie over de compatibiliteit.
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:
Meld u aan bij het Azure-portaal.
Selecteer + Een resource maken in het resourcemenu.
Zoek naar Automation.
Selecteer de Automation-app in de zoekresultaten.
Selecteer Maken in het deelvenster "Een Automation-account maken".
Selecteer een abonnement en resourcegroep die moeten worden gebruikt voor de uitvoering van het PowerShell-script. Voer een naam in voor dit automatiseringsaccount.
Selecteer Geavanceerd. Controleer of Systeem toegewezen is ingeschakeld, zodat er een systeem-geassigneerde beheerde identiteit (SAMI) wordt gemaakt om te authentiseren bij Azure-resources.
Selecteer Labels. Overweeg het gebruik van Azure-tags. Bijvoorbeeld de tag 'Owner' of 'CreatedBy' om te bepalen wie de resource heeft gemaakt en de tag 'Omgeving' om te bepalen of deze resource in productie, ontwikkeling, enzovoort is. Zie Uw naamgevings- en tagstrategie voor Azure-resources ontwikkelen voor meer informatie.
Selecteer Beoordelen en maken.
Voltooi het maken van het Automation-account door Maken te selecteren.
Azure-rollen toewijzen aan het door het systeem toegewezen beheerde identiteitsaccount
Een Automation-account kan de door het systeem toegewezen beheerde identiteit gebruiken om tokens op te halen voor toegang tot andere resources die worden beveiligd door Microsoft Entra-id, zoals Azure SQL Database. Deze tokens vertegenwoordigen geen specifieke gebruiker van de toepassing. In plaats daarvan vertegenwoordigen ze de toepassing die toegang heeft tot de resource. In dit geval vertegenwoordigt het token bijvoorbeeld een Automation-account.
Voordat u een Azure Automation-runbook maakt, is het belangrijk om het juiste machtigingsniveau toe te kennen aan het Automation-account, volgens het principe van minimale bevoegdheden. Wanneer u een door het systeem toegewezen beheerde identiteit gebruikt, is het toevoegen van de rollen SQL DB-inzender en SQL Server-inzender aan de SAMI voldoende voor het automatiseren van Azure SQL Database-taken. Voor de meeste scenario's gebruikt u het bereik op resourcegroepniveau als uw automatisering alleen gericht is op specifieke databases. Als het moet werken voor een volledig abonnement, gebruikt u het bereik op abonnementsniveau.
In het volgende voorbeeld wordt Azure PowerShell gebruikt om de rol SQL DB-bijdrager in het huidige abonnement toe te wijzen aan de systeem-toegewezen beheerde identiteitsaccount.
$roleAssignmentParams = @{
ObjectId = "<automation-Identity-object-id>"
Scope = "/subscriptions/<subscription-id>"
RoleDefinitionName = "SQL DB Contributor"
}
New-AzRoleAssignment @roleAssignmentParams
Voer de volgende stappen uit om deze rollen toe te voegen aan een door het systeem toegewezen beheerde identiteit vanuit Azure Portal:
- Meld u aan bij het Azure-portaal.
- Zoek het zojuist gemaakte Azure Automation-account.
- Selecteer Identiteit onder Accountinstellingen.
- Selecteer onder Machtigingen het vak Azure-roltoewijzingen .
- Selecteer Roltoewijzing toevoegen (preview-versie)
- Selecteer in de vervolgkeuzelijst Toepassingsgebied de set van resources waarop de roltoewijzing van toepassing is - Abonnement, Resourcegroep, Rol en Toepassingsgebied.
- Selecteer in de vervolgkeuzelijst Rol een rol als SQL DB Contributor.
- Selecteer Opslaan.
Herhaal de stappen uit de stap Roltoewijzing toevoegen om de rol INzender voor SQL Server toe te voegen.
Aanbeveling
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.
- Zie Az-moduleondersteuning in Azure Automation om uw Azure-modules bij te werken.
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:
- Open het Azure Automation-account dat u in de vorige stap hebt gemaakt.
- Selecteer in het automation-accountvenster de menu-optie Runbooks aan de linkerkant om een nieuw Azure Automation-runbook te maken met het PowerShell-script. Voor meer informatie over het maken van automation-runbooks, zie Een nieuw runbook maken.
- Als u een nieuw runbook wilt toevoegen, selecteert u de menuoptie +Een runbook toevoegen en selecteert u vervolgens de optie Snel maken: een nieuw runbook maken.
- Typ in het deelvenster Runbook de naam van uw runbook (in dit voorbeeld wordt AutomaticTuningEmailAutomation gebruikt), selecteer het type runbook als PowerShell en schrijf een beschrijving van dit runbook om het doel ervan te beschrijven.
- Selecteer Maken om het maken van een nieuw runbook te voltooien.
Volg deze stappen om een PowerShell-script in het gemaakte runbook te laden:
- Selecteer RUNBOOKS in het deelvenster PowerShell-runbook bewerken in de menustructuur en vouw de weergave uit totdat u de naam van uw runbook ziet (in dit voorbeeld AutomaticTuningEmailAutomation). Dit runbook selecteren.
- In de eerste regel van het PowerShell-runbook bewerken (beginnend met nummer 1), kopieert u de volgende PowerShell-scriptcode. Dit PowerShell-script wordt geleverd as-is om u op weg te helpen. Pas het script aan uw behoeften aan.
In de koptekst van het opgegeven PowerShell-script moet u <SUBSCRIPTION_ID_WITH_DATABASES> vervangen door 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 aan de eigenschap '$subscriptions' in de header 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
Selecteer Opslaan om het script op te slaan. Wanneer u tevreden bent met het script, selecteer Publiceren om dit runbook te publiceren.
In het hoofdvenster van het runbook kunt u kiezen of u Start wilt selecteren om het script te testen . Selecteer Uitvoer om de resultaten van het uitgevoerde script weer te geven. Deze uitvoer gaat de inhoud van uw e-mail worden.
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-mailbericht verzenden – wordt gebruikt om e-mail te verzenden. E-mailberichten worden verzonden met het werk- of schoolaccount van de persoon die de workflow 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:
- Menu-item Mijn stromen openen .
- Selecteer in Mijn flows de +Vanuit blanco maken koppeling boven aan de pagina.
- Selecteer de koppeling naar honderden connectors en triggers zoeken.
- Typ terugkeerpatroon in het zoekveld en selecteer Schema - Terugkeerpatroon in de zoekresultaten om te plannen dat de e-mailleveringstaak moet worden uitgevoerd.
- Selecteer in het deelvenster Herhalingspatroon in het veld Frequentie de planningsfrequentie waarmee deze stroom moet worden uitgevoerd, zoals het verzenden van geautomatiseerde e-mails 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:
Actie creëren om PowerShell-script uit te voeren om optimalisatie-aanbevelingen op te halen.
- Selecteer +Nieuwe stap, gevolgd door Een actie toevoegen in het deelvenster Terugkeerstroom.
- Typ automatisering 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.
- Selecteer Stroom opslaan.
Maak een actie om uitvoer op te halen uit het uitgevoerde PowerShell-script.
- Selecteer +Nieuwe stap, gevolgd door Een actie toevoegen in het deelvenster Terugkeerstroom
- Typ automatisering in het zoekveld en selecteer Azure Automation: taakuitvoer ophalen uit 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).
- Selecteer in het veld Job-ID zodat het menu Dynamische inhoud verschijnt. Selecteer in dit menu de optie Taak-ID.
- Selecteer Stroom opslaan.
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-mailbericht in het zoekveld en selecteer Office 365 Outlook – Een e-mailbericht verzenden uit de zoekresultaten.
- Typ in het veld Aan het e-mailadres waarnaar u de e-mailmelding wilt verzenden.
- Type in het veld Onderwerp het onderwerp van uw e-mail, bijvoorbeeld 'E-mailmelding automatische afstemmingsaanbevelingen'.
- Selecteer in het veld Body zodat het menu Dynamische inhoud verschijnt. Selecteer Inhoud in dit menu onder Taakuitvoer ophalen.
- Selecteer Stroom opslaan.
Aanbeveling
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 van het e-mailbericht 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 vorige stappen configureert u de werkstroom voor e-mailbezorgingstaken. De volledige stroom die bestaat uit drie ingebouwde acties, wordt weergegeven in de volgende afbeelding.
Als u de stroom wilt testen, selecteert u 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.
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:
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.