Database
 sql >> Datenbank >  >> RDS >> Database

Azure-Automatisierungsmethoden

Im vergangenen Jahr habe ich viele Sitzungen zu Azure SQL-Datenbank gehalten und zahlreiche Artikel und Blogs verfasst. Ich werde oft gefragt, ob die Datenbankwartung immer noch ein wichtiger Faktor bei der Verwendung von Azure SQL Database ist. Ja – Aufgaben wie Indexwartung, Statistikaktualisierungen und Konsistenzprüfung sind nach wie vor wichtig, und es liegt am DBA, diese Aufgaben zu planen. Die Verwirrung rührt daher, dass Azure SQL Database eine Platform as a Service ist und Microsoft für die Infrastruktur sowie die Handhabung der Backups verantwortlich ist. Während einige Aspekte der physischen Beschädigung berücksichtigt werden können, gilt dies nicht für die logische Beschädigung innerhalb der Datenbank. Aus diesem Grund empfehle ich Kunden immer noch, DBCC CHECKDB auszuführen um sicherzustellen, dass sie vollständig geschützt sind.

Das Problem, das bei jedem neuen DBA auftritt, der mit Azure SQL-Datenbank arbeitet, ist, dass es keinen integrierten SQL Server-Agent gibt, wie wir ihn von SQL Server Standard und Enterprise Editions gewohnt sind.

Um Wartungsaufträge für eine Azure SQL-Datenbank zu planen, haben Sie eine Reihe von Optionen:

  • Verbundene Server
  • Datenbankwartungspläne
  • Powershell
  • Azure-Dienste
  • Elastic-Jobs

Die folgenden Demos gehen davon aus, dass Sie bereits Anmeldekonten, Firewallregeln und andere Sicherheitseinstellungen für den Remotezugriff auf Ihre Azure SQL-Datenbanken konfiguriert haben.

Verknüpfte Server

Das Herstellen einer Verbindung zu einer Azure SQL-Datenbank mithilfe eines Verbindungsservers ist ein weit verbreiteter Ansatz, da die meisten DBAs bereits mit dem Erstellen und Verwalten von Verbindungsservern vertraut sind. Die zwei häufigsten Arten, die ich gesehen habe, wie Clients Verbindungsserver verwenden, sind entweder der SQL Server Native Client oder der Microsoft OLE DB-Anbieter für ODBC-Treiber als Anbieter. Wenn Sie den nativen Client verwenden, müssen Sie den Servernamen als Datenquelle angeben; Wenn Sie jedoch den ODBC-Treiber verwenden, müssen Sie die Verbindungszeichenfolge abrufen und diese als Anbieterzeichenfolge verwenden. Diese beiden Werte finden Sie im Azure-Portal für Ihre Datenbank. Sobald Sie auf Ihre Datenbank klicken, sehen Sie den Servernamen und eine Option zum Anzeigen der Datenbank-Verbindungszeichenfolgen. Dieser Servername, sqlperformance.database.windows.net, würde ich für die SQL Server Native Client-Datenquelle verwenden.

Wenn Sie auf „Datenbankverbindungszeichenfolgen anzeigen“ klicken, haben Sie derzeit Optionen für ADO.NET, JDBC, ODBC und PHP. Um die Verbindungszeichenfolge für ODBC anzuzeigen, klicken Sie auf die Registerkarte ODBC.

Als nächstes müssen Sie den Verbindungsserver in SSMS erstellen. Klicken Sie unter „Server-Objekte“ mit der rechten Maustaste auf „Verknüpfte Server“, wählen Sie „Neuer verknüpfter Server“ und geben Sie die erforderlichen Informationen je nach Auswahl Ihres Datenquellenanbieters ein.

Klicken Sie anschließend auf „Sicherheit“ und definieren Sie Ihre Einstellungen. Normalerweise sehe ich die Option „Mit diesem Sicherheitskontext erstellt werden“ mit einem Remote-Login und einem Passwort.

Wenn Sie dies alles definiert haben, klicken Sie auf OK. Sie können jetzt mit der rechten Maustaste auf Ihren neuen verknüpften Server klicken und die Verbindung testen.

Sie können jetzt auf den verknüpften Server verweisen, um gespeicherte Prozeduren wie Index Optimize und DatabaseIntegrityCheck von Ola Hallengren direkt für die Azure SQL-Datenbank in einem SQL-Agent-Auftragsschritt aufzurufen.

Datenbankwartungspläne

Wenn Sie für Ihre Wartung einen Datenbankwartungsplan verwenden möchten, ist der Vorgang etwas einfacher. Erstellen Sie zunächst einfach Ihren Wartungsplan manuell oder mithilfe des Assistenten. Wenn Sie den Assistenten verwenden, können Sie nach dem Erstellen des Wartungsplans den Plan bearbeiten und dann die Azure-Verbindung hinzufügen. Anschließend ändern Sie jede Aufgabe so, dass sie die neue Verbindung verwendet. Ihr Verbindungsbildschirm sollte ungefähr so ​​aussehen:

Sie können Ihre Datenbankwartungspläne jetzt so planen, dass sie während Ihres Wartungsfensters ausgeführt werden.

PowerShell

PowerShell ist eine hervorragende Option für die Arbeit mit wiederholbaren Aufgaben, und die Verwendung von PowerShell mit Azure SQL-Datenbank ist unkompliziert. Sie können die Invoke-SqlCmd-Funktion verwenden, um Anweisungen für Ihre Datenbanken abzufragen oder auszuführen.

Ein gängiger Ansatz ist die Verwendung eines Skripts ähnlich dem von:

  $params = @{
   'Database' = 'YourDatabase'
   'ServerInstance' = 'instance.database.windows.net'
   'Username' = 'UserName'
   'Password' = 'ComplexP@$$word'
   'Query' = 'Your Query Here'
  }
  Invoke-Sqlcmd @params

Für Ihre Abfrage können Sie die Indexoptimierungs- und Konsistenzprüfungen von Ola Hallengren oder jedes benutzerdefinierte Skript verwenden, das Sie verwendet haben. Anschließend müssen Sie Ihre PowerShell-Skripts mit dem Planer planen, den Sie für Ihre Organisation verwenden.

Azure-Dienste

In die Azure-Plattform ist Azure Automation integriert, und um loszulegen, müssen Sie ein Automatisierungskonto erstellen. Sie müssen einen Namen für das Konto angeben, Ihr Abonnement, Ihre Ressourcengruppe und Ihren Standort auswählen und bestimmen, ob Sie ein ausführendes Azure-Konto erstellen möchten.

Nachdem Sie Ihr Konto erstellt haben, können Sie mit dem Erstellen von Runbooks beginnen. Mit den Runbooks können Sie fast alles machen. Es gibt zahlreiche vorhandene Runbooks, die Sie durchsuchen und für Ihren eigenen Gebrauch ändern können, einschließlich Bereitstellung, Überwachung, Lebenszyklusverwaltung und mehr.

Sie können die Runbooks offline oder über das Azure-Portal erstellen, und sie werden mit PowerShell erstellt. In diesem Beispiel verwenden wir den Code aus der PowerShell-Demo wieder und demonstrieren auch, wie wir den integrierten Azure-Dienstplaner verwenden können, um unseren vorhandenen PowerShell-Code auszuführen, ohne uns auf einen lokalen Planer, Aufgabenplaner oder eine Azure-VM verlassen zu müssen um einen Job zu planen.

Klicken Sie zunächst auf Runbooks

Klicken Sie anschließend auf „Runbook hinzufügen“

Klicken Sie auf „Neues Runbook erstellen“

Geben Sie einen Namen und einen Runbooktyp an, ich habe PowerShell für meine Demo ausgewählt.

Sie befinden sich dann in einem Bearbeitungsbildschirm für Ihr neues Runbook. Hier können Sie die Details konfigurieren und Ihr Runbook erstellen. Für diese Demo führe ich nur ein PowerShell-Skript aus, um eine gespeicherte Prozedur für eine Datenbank aufzurufen. Sobald Sie Ihren gesamten Code ausgearbeitet haben, können Sie Ihr Runbook veröffentlichen und speichern.

Von hier aus können Sie das Runbook starten und überprüfen, ob alles entsprechend funktioniert, sowie die Ausführung des Runbooks zu bestimmten Zeiten planen. Lassen Sie uns diesen Vorgang Schritt für Schritt durchgehen, indem Sie auf „Planen“

klicken

Wir müssen auf „Einen Zeitplan mit Ihrem Runbook verknüpfen“ klicken und da wir noch keine Zeitpläne erstellt haben, müssen wir einen neuen definieren, indem wir auf „Neuen Zeitplan erstellen“ klicken.

Geben Sie ähnlich wie im SQL Server-Agent einen Zeitplannamen und eine Beschreibung an, wenn Sie möchten, wann gestartet werden soll und wie oft er ausgeführt werden soll. Ich lege fest, dass dies jeden Tag um 2 Uhr morgens auftritt.

Ich habe jetzt ein veröffentlichtes Runbook, das jede Nacht um 2 Uhr morgens ausgeführt wird, um eine Indexwartung für eine meiner Datenbanken durchzuführen.

Elastische Jobs

Elastic Jobs befindet sich derzeit noch in der Vorschauphase, daher werde ich aufgrund der hohen Wahrscheinlichkeit, dass sich Bildschirme und Funktionen ändern werden, nicht ins Detail gehen.

Die Verwendung elastischer Jobs erfordert, dass Sie einen Pool für elastische Datenbanken definiert haben und dem Pool mindestens eine Datenbank zuweisen, für die Jobs ausgeführt werden. Nachdem Sie den Pool für elastische Datenbanken erstellt und eine Datenbank hinzugefügt haben, können Sie auf Job erstellen klicken.

Geben Sie Ihrem Job einen aussagekräftigen Namen und geben Sie den Benutzernamen und das Passwort an, um sich mit den Datenbanken zu verbinden, sowie das Skript, das Sie ausführen möchten. Klicken Sie auf Speichern und Sie haben jetzt einen elastischen Job.

Sie können dann den Job ausführen, das Skript anzeigen oder den Job abbrechen, wenn er ausgeführt wird.

Zwar gibt es bestimmte Dinge, die Sie über das Azure-Portal mit elastischen Aufträgen tun können, die wirklichen Leistungs- und Konfigurationsoptionen sind jedoch über die PowerShell-API verfügbar. Um einen Auftrag zu planen, müssen Sie das Cmdlet New-AzureSQLJobSchedule verwenden. Weitere Einzelheiten zu den zusätzlichen Funktionen und zum Planen von Jobs finden Sie hier:

  • Erstellen und verwalten Sie elastische SQL-Datenbank-Jobs mit PowerShell

Insgesamt gefällt mir das Feature für elastische Jobs und ich hoffe, dass, wenn es allgemein verfügbar ist, mehr Funktionen in das Azure-Portal integriert werden, ohne dass es mit PowerShell verwaltet werden muss. Mir gefällt, dass Sie T-SQL direkt ausführen können, ohne es in PowerShell ausführen zu müssen, und wie es für alle Datenbanken im Pool ausgeführt werden kann.

Zusammenfassung

Wenn es um Azure SQL-Datenbanken geht, ja, Sie sind immer noch für bestimmte Wartungsarbeiten an Ihren Datenbanken verantwortlich. Sie haben zahlreiche Methoden zum Planen von Jobs, und abhängig von Ihren Anforderungen und der Größe Ihrer Umgebung sind bestimmte Optionen bessere Lösungen. Verbindungsserver und Datenbankwartungspläne sind schnelle und einfache Methoden, wenn Sie lokale oder Azure-VMs mit bereits konfiguriertem SQL-Server und eine kleine Azure-Bereitstellung haben. PowerShell ist immer eine gute Option, Sie müssen nur eine Lösung finden, um die Ausführung der Skripts zu planen. Die Azure-Automatisierung ist eine sehr robuste Lösung, mit der Sie Runbooks erstellen können, um so gut wie alles zu erreichen, und die Runbooks einfach zu planen, und elastische Aufträge sind eine weitere großartige Azure-basierte Lösung, wenn Sie Aufgaben haben, die Sie für eine Gruppe von Datenbanken in einem Pool für elastische Datenbanken ausführen müssen.