Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:Azure SQL-Datenbank
Azure SQL Managed Instance
Die Optimierungsempfehlungen für Azure SQL-Datenbank werden mit dem Feature Automatische Optimierung von Azure SQL-Datenbank generiert. Diese Lösung führt eine kontinuierliche Überwachung und Analyse der Workloads von Datenbanken durch und stellt Optimierungsempfehlungen für jede einzelne Datenbank im Hinblick auf Indexerstellung, Indexlöschung und Optimierung von Abfrageausführungsplänen bereit.
Sie können die Empfehlungen zur automatischen Optimierung von Azure SQL-Datenbank im Azure-Portal anzeigen oder mit REST-API-Aufrufen oder T-SQL- und PowerShell-Befehlen abrufen. In diesem Artikel wird ein PowerShell-Skript zum Abrufen der Empfehlungen zur automatischen Optimierung verwendet.
Hinweis
In diesem Artikel wird das Azure Az PowerShell-Modul verwendet. Dieses PowerShell-Modul wird für die Interaktion mit Azure empfohlen. Informationen zu den ersten Schritten mit dem Az PowerShell-Modul finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.
Wichtig
Das PowerShell-Modul Azure Resource Manager (AzureRM) wurde am 29. Februar 2024 nicht mehr unterstützt. Alle zukünftigen Entwicklungen sollten das Az.Sql-Modul verwenden. Benutzern wird empfohlen, von AzureRM zum Az PowerShell-Modul zu migrieren, um fortgesetzte Unterstützung und Updates sicherzustellen. Das AzureRM-Modul wird nicht mehr verwaltet oder unterstützt. Die Argumente für die Befehle im Az PowerShell-Modul und in den AzureRM-Modulen sind wesentlich identisch. Weitere Informationen zur Kompatibilität finden Sie unter Einführung in das neue Az PowerShell-Modul.
Automatisieren von E-Mail-Benachrichtigungen für Empfehlungen zur automatischen Optimierung
Mit der folgenden Lösung wird das Senden von E-Mail-Benachrichtigungen automatisiert, die Empfehlungen zur automatischen Optimierung enthalten. Die beschriebene Lösung umfasst die automatische Ausführung eines PowerShell-Skripts zum Abrufen von Optimierungsempfehlungen mithilfe von Azure Automation und die Automatisierung der Planung der E-Mail-Übermittlung unter Verwendung von Microsoft Power Automate.
Erstellen eines Azure Automation-Kontos
Um Azure Automation verwenden zu können, müssen Sie zunächst ein Automation-Konto erstellen und dieses mit Azure-Ressourcen konfigurieren, um damit das PowerShell-Skript auszuführen. Weitere Informationen zu Azure Automation und seinen Funktionen finden Sie unter Erste Schritte mit Azure Automation.
Führen Sie diese Schritte aus, um ein Azure Automation-Konto zu erstellen, indem Sie im Azure Marketplace eine Automation-App auswählen und konfigurieren:
Melden Sie sich beim Azure-Portal an.
Wählen Sie im Ressourcenmenü + Ressource erstellen aus.
Suchen Sie nach Automation.
Wählen Sie in den Suchergebnissen die App Automation aus.
Wählen Sie im Bereich "Automation-Konto erstellen" die Option "Erstellen" aus.
Wählen Sie ein Abonnement und eine Ressourcengruppe aus, die für die Ausführung des PowerShell-Skripts verwendet werden sollen. Geben Sie einen Namen für dieses Automation-Konto ein.
Wählen Sie "Erweitert" aus. Stellen Sie sicher, dass System zugewiesen aktiviert ist, damit eine systemseitig zugewiesene verwaltete Identität (System Assigned Managed Identity, SAMI) für die Authentifizierung bei Azure-Ressourcen erstellt wird.
Wählen Sie Tags aus. Erwägen Sie die Verwendung von Azure-Tags. Beispielsweise das Tag „Owner“ oder „CreatedBy“, um zu identifizieren, wer die Ressource erstellt hat, und das Tag „Environment“, um zu identifizieren, ob sich diese Ressource in Produktion, Entwicklung usw. befindet. Weitere Informationen finden Sie unter Entwickeln Ihrer Benennungs- und Kennzeichnungsstrategie für Azure-Ressourcen.
Wählen Sie Bewerten + erstellen aus.
Schließen Sie die Erstellung des Automatisierungskontos ab, indem Sie Erstellen auswählen.
Zuweisen von Azure-Rollen zum systemseitig zugewiesenen Konto für verwaltete Identitäten
Ein Automation-Konto kann seine systemseitig zugewiesene verwaltete Identität verwenden, um Token für den Zugriff auf andere Ressourcen abzurufen, die durch die Microsoft Entra ID geschützt sind, z. B. Azure SQL-Datenbank. Diese Token repräsentieren keinen bestimmten Benutzer der Anwendung. Stattdessen stellen sie die Anwendung dar, die auf die Ressource zugreift. In diesem Fall stellt das Token beispielsweise ein Automation-Konto dar.
Bevor Sie ein Azure Automation-Runbook erstellen, ist es wichtig, dem Automation-Konto die entsprechende Berechtigungsstufe zu gewähren, wobei Sie dem Prinzip der geringsten Rechte folgen. Wenn Sie eine systemseitig zugewiesene verwaltete Identität verwenden, ist das Hinzufügen der Rollen "SQL-Datenbank-Mitwirkender " und "SQL Server-Mitwirkender " zur SAMI ausreichend, um Azure SQL-Datenbank-Aufgaben zu automatisieren. Wenn Ihre Automatisierung nur auf bestimmte Datenbanken abzielt, verwenden Sie in den meisten Szenarien den Bereich auf Ressourcengruppenebene. Wenn es für ein gesamtes Abonnement ausgeführt werden muss, verwenden Sie den Bereich auf Abonnementebene.
Im folgenden Beispiel wird Azure PowerShell verwendet, um dem dem System zugewiesenen Konto für verwaltete Identität die Rolle "Mitwirkender an der SQL-Datenbank " im aktuellen Abonnement zuzuweisen.
$roleAssignmentParams = @{
ObjectId = "<automation-Identity-object-id>"
Scope = "/subscriptions/<subscription-id>"
RoleDefinitionName = "SQL DB Contributor"
}
New-AzRoleAssignment @roleAssignmentParams
Führen Sie die folgenden Schritte aus, um diese Rollen einer systemseitig zugewiesenen verwalteten Identität über das Azure-Portal hinzuzufügen:
- Melden Sie sich beim Azure-Portal an.
- Suchen Sie das neu erstellte Azure Automation-Konto.
- Wählen Sie unter Kontoeinstellungen die Option Identität aus.
- Aktivieren Sie unter Berechtigungen das Kontrollkästchen Azure-Rollenzuweisungen .
- Wählen Sie die Option Rollenzuweisung hinzufügen (Vorschau) aus.
- Wählen Sie in der Dropdownliste Bereich die Gruppe von Ressourcen aus, die die Rollenzuweisung anwendet: Abonnement, Ressourcengruppe, Rolle und Bereich.
- Wählen Sie in der Dropdownliste Rolle eine Rolle als SQL-DB-Mitwirkender aus.
- Wählen Sie Speichern aus.
Wiederholen Sie die Schritte aus dem Schritt Rollenzuweisung hinzufügen, um die Rolle SQL Server-Mitwirkender hinzuzufügen.
Tipp
Notieren Sie den Azure Automation-Kontonamen, die Abonnement-ID und die Ressourcen (z.B. durch Kopieren und Einfügen in einen Editor) genau wie bei der Eingabe während des Erstellens der Automation-App. Sie benötigen diese Informationen später.
Wenn Sie über mehrere Azure-Abonnements verfügen, für die Sie die gleiche Automatisierung einrichten möchten, müssen Sie diesen Vorgang für Ihre anderen Abonnements wiederholen.
Aktualisieren von Azure Automation-Modulen
Das PowerShell-Skript zum Abrufen der Empfehlungen zur automatischen Optimierung verwendet die Befehle Get-AzResource und Get-AzSqlDatabaseRecommendedAction, für die mindestens Version 4 des Azure-Moduls erforderlich ist.
- Informationen zum Aktualisieren Ihrer Azure-Module finden Sie unter Unterstützung von Az-Modulen in Azure Automation.
Erstellen eines Azure Automation-Runbooks
Der nächste Schritt ist das Erstellen eines Runbooks in Azure Automation, in dem sich das PowerShell-Skript für den Abruf von Optimierungsempfehlungen befindet.
Führen Sie diese Schritte aus, um ein neues Azure Automation-Runbook zu erstellen:
- Greifen Sie auf das Azure Automation-Konto zu, das Sie im vorherigen Schritt erstellt haben.
- Wählen Sie im Bereich des Automation-Kontos auf der linken Seite das Menüelement Runbooks aus, um ein neues Azure Automation-Runbook mit dem PowerShell-Skript zu erstellen. Weitere Informationen zum Erstellen von Automation-Runbooks finden Sie unter Erstellen eines Runbooks.
- Um ein neues Runbook hinzuzufügen, wählen Sie die Menüoption +Runbook hinzufügen aus, und wählen Sie dann Schnellerstellung – Neues Runbook erstellen aus.
- Geben Sie im Bereich Runbook den Namen Ihres Runbooks ein (in diesem Beispiel wird AutomaticTuningEmailAutomation verwendet), wählen Sie den Runbooktyp PowerShell aus , und schreiben Sie eine Beschreibung dieses Runbooks, um seinen Zweck zu beschreiben.
- Wählen Sie Erstellen aus, um die Erstellung eines neuen Runbooks abzuschließen.
Führen Sie diese Schritte aus, um ein PowerShell-Skript in das erstellte Runbook zu laden:
- Wählen Sie im Bereich PowerShell-Runbook bearbeiten in der Menüstruktur die Option RUNBOOKS aus, und erweitern Sie die Ansicht, bis der Name Ihres Runbooks angezeigt wird (in diesem Beispiel AutomaticTuningEmailAutomation). Wählen Sie dieses Runbook aus.
- Kopieren Sie in der ersten Zeile des "Edit PowerShell Runbook" (beginnend mit der Zahl 1) den folgenden PowerShell-Skriptcode, und fügen Sie ihn ein. Dieses PowerShell-Skript wird unverändert bereitgestellt, um Ihnen den Einstieg zu erleichtern. Passen Sie das Skript an Ihre Anforderungen an.
Sie müssen im Header des bereitgestellten PowerShell-Skripts <SUBSCRIPTION_ID_WITH_DATABASES> durch Ihre Azure-Abonnement-ID ersetzen. Informationen zum Abrufen der Azure-Abonnement-ID finden Sie unter Abrufen Ihrer Azure-Abonnement-GUID.
Bei mehreren Abonnements können Sie diese durch Kommas getrennt in der „$subscriptions“-Eigenschaft im Header des Skripts hinzufügen.
# 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
Wählen Sie Speichern aus, um das Skript zu speichern. Wenn Sie mit dem Skript zufrieden sind, wählen Sie Veröffentlichen aus, um dieses Runbook zu veröffentlichen.
Im Hauptbereich des Runbooks können Sie die Option Start auswählen, um das Skript zu testen . Wählen Sie Ausgabe aus, um die Ergebnisse des ausgeführten Skripts anzuzeigen. Diese Ausgabe wird der Inhalt Ihrer E-Mail sein.
Passen Sie den Inhalt unbedingt an, indem Sie das PowerShell-Skript Ihrem Bedarf entsprechend ändern.
Mit den obigen Schritten wird das PowerShell-Skript zum Abrufen von Empfehlungen zur automatischen Optimierung in Azure Automation geladen. Im nächsten Schritt automatisieren und planen Sie den Auftrag zur E-Mail-Übermittlung.
Automatisieren der E-Mail-Aufträge mit Microsoft Power Automate
Zum Vervollständigen der Lösung erstellen Sie im letzten Schritt einen Automation-Flow in Microsoft Power Automate, der drei Aktionen (Aufträge) umfasst:
- Azure Automation – Auftrag erstellen : Wird zum Ausführen des PowerShell-Skripts zum Abrufen von Empfehlungen für die automatische Optimierung im Azure Automation-Runbook verwendet.
- Azure Automation – Auftragsausgabe abrufen – wird zum Abrufen der Ausgabe aus dem ausgeführten PowerShell-Skript verwendet.
- Office 365 Outlook – E-Mail senden – wird zum Versenden von E-Mails verwendet. E-Mails werden mit dem Geschäfts-, Schul- oder Unikonto der Person gesendet, die den Flow erstellt hat.
Weitere Informationen zu den Funktionen von Microsoft Power Automate finden Sie unter Erste Schritte mit Microsoft Power Automate.
Voraussetzung für diesen Schritt ist, dass Sie sich für ein Microsoft Power Automate-Konto registrieren und sich anmelden. Führen Sie in der Lösung die folgenden Schritte aus, um einen neuen Flow einzurichten:
- Greifen Sie auf das Menüelement "Meine Flows " zu.
- Wählen Sie in Meine Flows oben auf der Seite den Link +Aus leerem Element erstellen aus.
- Wählen Sie den Link aus, um nach Hunderten von Konnektoren und Triggern zu suchen.
- Geben Sie in das Suchfeld Wiederholung ein, und wählen Sie in den Suchergebnissen Zeitplan - Wiederholung aus, um die Ausführung des E-Mail-Zustellungsauftrags zu planen.
- Wählen Sie im Bereich „Serie“ im Feld „Häufigkeit“ die geplante Häufigkeit (z.B. automatisierte E-Mail pro Minute, Stunde, Tag, Woche usw. senden) für die Ausführung dieses Flows aus.
Der nächste Schritt besteht darin, dem neu erstellten wiederkehrenden Flow drei Aufträge (Erstellen, Ausgabe abrufen und E-Mail senden) hinzuzufügen. Führen Sie zum Hinzufügen der erforderlichen Aufträge zum Flow die folgenden Schritte aus:
Erstellen Sie die Aktion für das Ausführen des PowerShell-Skripts zum Abrufen von Optimierungsempfehlungen.
- Wählen Sie +Neuer Schritt aus, gefolgt von Aktion hinzufügen im Bereich Wiederholungsfluss.
- Geben Sie im Suchfeld automation ein, und wählen Sie in den Suchergebnissen Azure Automation – Auftrag erstellen aus.
- Konfigurieren Sie im Bereich „Auftrag erstellen“ die Auftragseigenschaften. Für diese Konfiguration benötigen Sie Details zu Ihrer Azure-Abonnement-ID, Ihrer Ressourcengruppe und Ihrem Automation-Konto, die zuvor im Bereich Automation-Kontoaufgezeichnet wurden. Weitere Informationen zu den in diesem Abschnitt verfügbaren Optionen finden Sie unter Azure Automation – Auftrag erstellen.
- Wählen Sie Flow speichern aus.
Erstellen Sie eine Aktion zum Abrufen der Ausgabe aus dem ausgeführten PowerShell-Skript.
- Wählen Sie +Neuer Schritt aus, gefolgt von Aktion hinzufügen im Bereich Wiederholungsfluss
- Geben Sie in das Suchfeld automation ein, und wählen Sie Azure Automation – Auftragsausgabe abrufen aus den Suchergebnissen aus. Weitere Informationen zu den in diesem Abschnitt verfügbaren Optionen finden Sie unter Azure Automation – Auftragsausgabe abrufen.
- Geben Sie in die erforderlichen Felder (ähnlich wie bei der vorherigen Auftragserstellung) Ihre Azure-Abonnement-ID, die Ressourcengruppe und ein Automation-Konto (wie im Bereich „Automation-Konto“ eingegeben) ein.
- Wählen Sie im Feld Job-ID aus, dass das Menü Dynamischer Inhalt angezeigt werden soll. Wählen Sie in diesem Menü die Option Job-ID aus.
- Wählen Sie Flow speichern aus.
Erstellen einer Aktion zum Versenden von E-Mail-Nachrichten mithilfe der Office 365-Integration
- Wählen Sie +Neuer Schritt aus, gefolgt von Aktion hinzufügen im Bereich Wiederholungsfluss.
- Geben Sie in das Suchfeld E-Mail senden ein, und wählen Sie Office 365 Outlook – E-Mail senden aus den Suchergebnissen aus.
- Geben Sie im Feld An die E-Mail-Adresse ein, an die Sie die Benachrichtigungs-E-Mail senden möchten.
- Geben Sie im Feld Betreff den Betreff Ihrer E-Mail ein, z. B. "Automatische E-Mail-Benachrichtigung über Optimierungsempfehlungen".
- Wählen Sie im Feld Text aus, damit das Menü Dynamischer Inhalt angezeigt werden soll. Wählen Sie in diesem Menü unter Auftragsausgabe abrufen die Option Inhalt aus.
- Wählen Sie Flow speichern aus.
Tipp
Um automatisierte E-Mail-Nachrichten an verschiedene Empfänger zu senden, erstellen Sie separate Flows. Ändern Sie in diesen zusätzlichen Abläufen die E-Mail-Adresse des Empfängers im Feld "An " und die Betreffzeile der E-Mail im Feld "Betreff ". Das Erstellen neuer Runbooks in Azure Automation mit angepassten PowerShell-Skripts (z. B. bei Änderung der Azure-Abonnement-ID) ermöglicht eine weitere Anpassung automatisierter Szenarien, z. B. das Versenden von E-Mails an separate Empfänger bei automatisierten Optimierungsempfehlungen für separate Abonnements.
In den vorherigen Schritten wird der Workflow für den E-Mail-Zustellungsauftrag konfiguriert. Der gesamte Flow – bestehend aus drei erstellten Aktionen – wird in der folgenden Abbildung dargestellt.
Um den Flow zu testen, wählen Sie Jetzt ausführen aus. Statistiken zur Ausführung der automatisierten Aufträge zeigen den Erfolg der gesendeten E-Mail-Benachrichtigungen. Sie können im Analysebereich des Flows angezeigt werden.
Der Bereich "Flow-Analyse" ist hilfreich, um den Erfolg von Auftragsausführungen zu überwachen und bei Bedarf eine Problembehandlung durchzuführen. Bei der Problembehandlung können Sie auch das Ausführungsprotokoll des PowerShell-Skripts untersuchen, auf das Sie über die Azure Automation-App zugreifen können.
Die finale Ausgabe der automatisierten E-Mail sieht in etwa wie die folgende E-Mail aus, die nach dem Erstellen und Ausführen dieser Lösung empfangen wurde:
Durch Anpassen des PowerShell-Skripts können Sie die Ausgabe und die Formatierung der automatisierten E-Mails an Ihre Bedürfnisse anpassen.
Sie können die Lösung weiter anpassen, um E-Mail-Benachrichtigungen basierend auf einem bestimmten Optimierungsereignis zu erstellen, die abhängig von Ihren eigenen Szenarien an mehrere Empfänger für unterschiedliche Abonnements oder für Datenbanken gesendet werden.