Automatisieren von Datenbankaufgaben für die Skalierbarkeit
Wenn Sie mit der Automatisierung von SQL Server arbeiten, ist es üblich, SQL-Agent zu verwenden, um Aufträge für Automatisierungszwecke zu planen. Obwohl Azure SQL Managed Instance und SQL Server, die auf einem virtuellen Azure-Computer ausgeführt werden, weiterhin über diese Option verfügen, tut Azure SQL-Datenbank dies nicht, sodass Sie möglicherweise alternative Automatisierungsmethoden verwenden müssen, um ähnliche Ergebnisse zu erzielen.
Azure Automation
Azure Automation bietet Prozessautomatisierung, Konfigurationsverwaltung und eine vollständige Integration mit den Optionen der Azure Plattform, wie rollenbasierte Zugriffssteuerung und Microsoft Entra ID, sowie die Verwaltung von Azure-Ressourcen und lokalen Ressourcen.
Mit Azure Automation können Sie Ressourcen sowohl in Azure als auch auf lokalen VMs problemlos steuern. Beispielsweise können Sie Hybridrunbooks verwenden, um Aufgaben wie das Starten einer VM, das Ausführen einer SQL Server Sicherung und das Herunterfahren der VM zu automatisieren, sodass sie kostengünstig und effizient ist.
Ein weiteres häufiges Szenario besteht darin, Azure Automation für regelmäßige Wartungsvorgänge zu verwenden, z. B. das Löschen von veralteten oder alten Daten oder das Neuindexieren einer SQL-Datenbank.
Komponenten
Azure Automation unterstützt sowohl Automatisierungs- als auch Konfigurationsverwaltungsaktivitäten. Wir werden uns auf die Automatisierungskomponenten konzentrieren, aber Azure Automation kann auch zur Verwaltung von Server-Updates und Statuskonfigurationen verwendet werden.
Komponente | BESCHREIBUNG |
---|---|
Runbook | Runbooks sind die Ausführungseinheiten in Azure Automation. Runbooks können einen von drei Typen aufweisen: PowerShell-basiertes grafisches Runbook, PowerShell-Skript oder Python-Skript. PowerShell-Runbooks werden am häufigsten für die Verwaltung von Azure SQL-Ressourcen verwendet. |
Modul | Azure Automation definiert einen Ausführungskontext für den PowerShell- oder Python-Code, den Sie in Ihrem Runbook ausführen. Zum Ausführen von Code müssen Sie die unterstützenden Module importieren. Wenn Sie z. B. das PowerShell-Cmdlet Get-AzSqlDatabase ausführen müssen, müssen Sie das PowerShell-Modul Az.SQL in Ihr Automation-Konto importieren. |
Credential | Anmeldeinformationen speichern vertrauliche Informationen, die Runbooks oder Konfigurationen zur Laufzeit verwenden können. |
Zeitplan | Zeitpläne werden mit Runbooks verknüpft und lösen ein Runbook zu einem bestimmten Zeitpunkt aus. |
Weitere Informationen zu Azure CLI und PowerShell-Befehlen zum Verwalten von Azure SQL Datenbank- und Azure SQL Managed Instance-Ressourcen finden Sie unter den folgenden Links: PowerShell-Modul für Azure SQL und Azure CLI für Azure SQL.
Elastische Aufträge
Einer der Gründe dafür, warum sich so viele Datenbankadministratoren in Azure Automation eingearbeitet haben, ist, dass in Azure SQL-Datenbank anfangs keine geplanten Aufträge verfügbar waren.
Diese Einschränkung bedeutete, dass DBAs alternative Lösungen finden mussten, um diese wichtigen Aufgaben effizient zu bewältigen. Azure Automation hat sich in diesem Szenario zu einem wertvollen Tool entwickelt, das die Möglichkeit bietet, geplante Aufträge zu erstellen und zu verwalten, Datenbankmigrationsprozesse zu automatisieren und routinemäßige Wartungsaufgaben auszuführen.
Aufbau
Die Funktion Elastic Jobs ermöglicht es Ihnen, eine Reihe von T-SQL-Skripten gegen eine Sammlung von Servern oder Datenbanken als einmaligen Auftrag oder nach einem festgelegten Zeitplan auszuführen. Elastic-Jobs funktionieren ähnlich wie SQL Server Agent-Jobs, mit dem Unterschied, dass sie auf die Ausführung von T-SQL beschränkt sind. Die Aufträge funktionieren auf allen Ebenen von Azure SQL Database.
Zum Konfigurieren von elastischen Aufträgen benötigen Sie einen Auftrags-Agent und eine dedizierte Datenbank für die Verwaltung Ihrer Aufträge. Die empfohlene Serviceebene für die Auftragsdatenbank ist S1 oder höher. Die optimale Serviceebene hängt von der Anzahl der von Ihnen ausgeführten Aufträge und der Häufigkeit dieser Aufträge ab.
Sehen wir uns die elastischen Auftragskomponenten an:
- Elastic Job Agent: Ihre Azure-Ressource zur Ausführung und Verwaltung von Aufträgen.
- Auftragsdatenbank – eine Datenbank, die für die Verwaltung Ihrer Aufträge bestimmt ist.
- Zielgruppe – eine Sammlung von Servern, elastischen und einzelnen Datenbanken, in denen ein Auftrag ausgeführt wird.
- Auftrag – ein oder mehrere T-SQL-Skripts, die einen Auftragsschritt verfassen.
Wenn die Zielgruppe ein Server oder ein Pool für elastische Datenbanken ist, sollten Anmeldeinformationen in der Masterdatenbank des Servers oder Pools erstellt werden, damit der Auftrags-Agent die enthaltenen Datenbanken auflisten kann. Für ein Singleton sind lediglich Datenbankanmeldeinformationen erforderlich. Anmeldeinformationen sollten immer nur mit den für die Ausführung von Auftragsschritten erforderlichen Mindestberechtigungen ausgestattet sein.
Sie können einen elastischen Auftragsagent über die Azure-Portal erstellen. Stellen Sie auf der Seite Elastic Job Agent sicher, dass Sie einen Namen für Ihren Agent angeben und eine SQL Datenbank für Ihre Auftragsdatenbank angeben.
Das folgende PowerShell-Skript erstellt einen elastischen Auftrag namens MyFirstElasticJob, fügt ihm einen Auftragsschritt hinzu und führt einen SQL-Befehl aus, um eine Tabelle zu erstellen, wenn sie in der Datenbank nicht vorhanden ist.
Write-Output "Creating a new job..."
$jobName = "MyFirstElasticJob"
$job = $jobAgent | New-AzSqlElasticJob -Name $jobName -RunOnce
Write-Output "Creating job steps for $($jobName) job..."
$sqlText1 = "IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id('MyTable')) CREATE TABLE [dbo].[MyTable]([Id] [int] NOT NULL);"
$job | Add-AzSqlElasticJobStep -Name "Step1" -TargetGroupName $serverGroup.TargetGroupName -CredentialName $jobCred.CredentialName -CommandText $sqlText1
Führen Sie schließlich den elastischen Auftrag MyFirstElasticJob aus.
Write-Output "Start the job..."
$jobExecution = $job | Start-AzSqlElasticJob
$jobExecution
Anwendungsfälle
Elastische Aufträge können in den folgenden Szenarien verwendet werden:
- Automatisieren Sie Verwaltungsaufgaben zum Ausführen eines bestimmten Zeitplans.
- Wenden Sie Schemaänderungen an.
- Datenverschiebungen.
- Sammeln und Aggregatieren Sie Daten für Berichte oder andere Zwecke.
- Laden Sie Daten aus dem Azure Blob Storage.
- Konfiguration von Aufträgen, sodass diese für eine gesamte Sammlung von Datenbanken auf wiederkehrender Basis ausgeführt werden (etwa in Zeiten mit geringer Auslastung).
- Datenverarbeitung über eine große Anzahl von Datenbanken, z. B. Telemetriesammlungen. Die Ergebnisse werden zur weiteren Analyse in einer einzelnen Zieltabelle gesammelt.
Migrieren von SQL-Agent-Aufträgen zu elastischen Aufträgen
Es ist zwar möglich, eigene Skripts für die Migration Ihrer SQL-Agent-Aufträge zu elastischen Aufträgen zu erstellen, es gibt jedoch eine bequemere Option. Es gibt ein herunterladbares Skript, welches das Kopieren vorhandener SQL-Agent-Aufträge in elastische Aufträge erleichtert.
Das Skript ist ein Tool, das den Prozess der Konvertierung dieser Aufträge automatisiert, wodurch Sie die Zeit und den Aufwand sparen, sie in der neuen Umgebung manuell neu erstellen zu müssen.
Die Datei ist ein gezippter Ordner, der das Skript und die zugehörige Dokumentation enthält. Um es zu verwenden, würden Sie die Datei herunterladen und die Anweisungen befolgen.
Nachdem Sie alle in den Anweisungen aufgeführten Parameter eingegeben haben, wird die Auftragsliste angezeigt. Das Skript erstellt dann jeden Auftrag einzeln in einem deaktivierten Zustand, sofern er noch nicht vorhanden ist. Nach der Erstellung eines Auftrags werden die Schritte mit gleichen IDs, Befehlstexten, Wiederholungsversuchen und anfänglichen Wiederholungsintervallsekunden hinzugefügt. Die mit dem Auftragsschritt verknüpfte Datenbank ist die Zielgruppe. Wenn die Zielgruppe nicht vorhanden ist, wird sie automatisch erstellt. Die Kopie enthält keine Zeitpläne, Warnungen oder Benachrichtigungen.
Migrieren von SQL-Agent-Aufträgen zum SQL-Agent in Azure
Das Migrieren von Aufträgen aus einem lokalen SQL Server zu Azure SQL Managed Instance oder SQL Server, die auf einem virtuellen Computer ausgeführt werden, folgt einem Prozess, der für die meisten DBAs vertraut sein sollte.
Nehmen wir in unserem Szenario an, dass wir unsere lokalen SQL Server zu Azure SQL Managed Instance migriert haben. Wir müssen mehrere SQL-Agent-Aufträge migrieren und anpassen, damit sie nahtlos in der Azure-Umgebung funktionieren.
Bewerten von Abhängigkeiten: Identifizieren Sie den SQL-Agent-Auftrag, den Sie migrieren möchten. Listen Sie alle Abhängigkeiten, auf denen der Auftrag basiert, wie Verbindungsserver, Anmeldeinformationen und Datenbanken, auf.
Skript für den SQL-Agent-Auftrag: Erstellen Sie ein Skript für den SQL-Agent-Auftrag auf dem SQL Server als SQL-Skript. Dazu klicken Sie mit der rechten Maustaste auf den Auftrag in SQL Server Management Studio (SSMS), und wählen "Skriptauftrag als"-> "ERSTELLEN bis"-> "Neues Abfrage-Editor Fenster" aus.
Ändern von Auftragsabhängigkeiten: Überprüfen Sie das SQL-Skript und passen Sie alle Auftragsabhängigkeiten an, die sich möglicherweise aufgrund der Migration geändert haben. Wenn der Auftrag beispielsweise auf einen Verbindungsserver oder einen Dateipfad auf dem lokalen Server verweist, aktualisieren Sie ihn entsprechend der neuen Umgebung.
Azure SQL Mi-Auftragserstellung: Öffnen Sie SSMS oder Azure Data Studio und stellen Sie eine Verbindung mit Ihrem Azure SQL Managed Instance her. Erstellen Sie mithilfe des zuvor generierten Skripts einen neuen SQL-Agent-Auftrag.
Erstellen von Abhängigkeiten von Azure SQL MI: Wenn Ihr SQL-Agent-Auftrag auf Verbindungsservern oder Anmeldeinformationen basiert, erstellen Sie diese in der Azure SQL MI-Umgebung. Stellen Sie sicher, dass sie mit der Konfiguration des lokalen SQL Server übereinstimmen.
Planen Sie den Auftrag: Richten Sie den Auftragszeitplan in Azure SQL MI mithilfe von SQL Server-Agent ein. Sie können einen neuen Zeitplan erstellen und mit dem Auftrag verknüpfen.
Testen: Testen Sie den SQL-Agent-Auftrag gründlich in der Azure SQL MI-Umgebung, um sicherzustellen, dass er wie erwartet ausgeführt wird. Überprüfen Sie ihn auf Fehler oder Probleme, die aufgrund von Unterschieden zwischen lokalen SQL Server und Azure SQL MI auftreten können.
Überwachung und Wartung: Überwachen Sie die Leistung des Auftrags, und stellen Sie sicher, dass er weiterhin Ihren Anforderungen in der Azure SQL MI-Umgebung entspricht. Passen Sie alle Konfigurationen oder Zeitpläne nach Bedarf an.