Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Grundlagen der SQL Server-Aufgabenautomatisierung

Dies ist ein einführender Artikel über die Automatisierung in SQL Server, der sich hauptsächlich auf die grundlegenden Konzepte konzentriert. Wir werden einige Standardpraktiken und einige Beispiele besprechen, um Anfängern den Einstieg in die SQL Server-Automatisierung zu erleichtern.

Dieser Artikel hebt auch die Bedeutung der Automatisierung von SQL Server-Aufgaben hervor, um Zeit und Mühe zu sparen, die erforderlich sind, um diese Aufgaben manuell auszuführen.

Außerdem werden wir uns Fälle ansehen, in denen es keine gute Idee ist, SQL Server-Aufgaben zu automatisieren, obwohl die Automatisierung Zeit und Mühe spart.

Über die Automatisierung von SQL Server

Machen wir uns zunächst mit dem Begriff „Automatisierung“ vertraut und was genau ist SQL Server-Aufgabenautomatisierung.

Was ist Automatisierung?

Automatisierung ist ein weit gefasster Begriff, der eine Vielzahl von Dingen abdeckt, aber im Allgemeinen bedeutet er Programmierwerkzeuge und -geräte, die es ermöglichen, eine Reihe von Aufgaben automatisch mit wenig oder ohne menschliches Eingreifen auszuführen.

Was ist SQL Server-Automatisierung?

Die SQL Server-Automatisierung kann auch mehrere Bedeutungen haben, aber am häufigsten geht es um die Automatisierung von SQL Server-Verwaltungsaufgaben, um Zeit und Aufwand zu sparen.

Datenbankadministratoren oder Infrastrukturteams, die für die Verwaltung von SQL Server und gehosteten Datenbanken verantwortlich sind, verbringen oft viel Zeit mit der Durchführung von Datenbankwartungsaufgaben, die durch verschiedene Methoden automatisiert und in festgelegten Intervallen ausgeführt werden könnten.

In diesem Artikel konzentrieren wir uns hauptsächlich auf die Automatisierung von SQL Server-Verwaltungsaufgaben.

Wann Sie SQL-Aufgaben automatisieren sollten

Die Automatisierung einer SQL Server-Verwaltungsaufgabe erfordert eine sorgfältige Planung, bevor sie implementiert wird. Alle SQL-Verwaltungsaufgaben wie Sicherung, Datenbankwartung oder Datenbanküberwachung sollten idealerweise automatisiert werden, wenn sie dem Zweck dienen, ohne andere Probleme zu verursachen.

Wenn Sie SQL-Aufgaben nicht automatisieren sollten

Obwohl die Automatisierung in den meisten Fällen sehr nützlich ist, gibt es immer noch einige Aufgaben, die besser manuell ausgeführt werden sollten.

Wenn zum Beispiel eine Datenbankverwaltungsaufgabe 5 Minuten dauert und die Automatisierung dieser Aufgabe 15 Stunden für das Schreiben und Testen von Automatisierungsskripten erfordert, dann ist es effektiver, diese Aufgabe manuell auszuführen.bacsql

Es gibt bestimmte Aufgaben, die nicht automatisiert werden dürfen. Beispielsweise gehört es oft zu den Aufgaben eines DBA, die Datenbankänderungen zu überprüfen, bevor sie auf einem Live-Server bereitgestellt werden. Dadurch wird sichergestellt, dass die Änderungen mit der Zieldatenbank kompatibel sind. Die Automatisierung dieser Aufgabe birgt mehr Risiken als Vorteile, also belassen Sie es besser so wie es ist.

Allgemein gesagt, wenn eine Datenbankaufgabe einen manuellen Eingriff erfordert (d. h. sie muss von einer Person/einem Team gesehen oder verwaltet werden, um zum nächsten Schritt/zur nächsten Stufe überzugehen), gemäß den Regeln und Vorschriften Ihres Unternehmens, dann ist die vollständige Automatisierung dieser Aufgabe nicht durchführbar, es sei denn, es wird vom Top-Management Ihres Unternehmens genehmigt.

Beispiele für SQL-Automatisierung

Sehen wir uns nun einige Beispiele für die SQL-Automatisierung an.

Datenbanksicherungsszenario (DBA-Perspektive)

Datenbankadministratoren (DBAs) kümmern sich um Unternehmensdatenbanken und zu ihren täglichen Aufgaben gehören die Bearbeitung datenbankbezogener Anfragen und die Verwaltung des Datenbankservers.

Ein DBA verbringt die meiste Zeit damit, kleine Änderungen an den Datenbanken zu verwalten und bereitzustellen und sich um den Datenbankserver zu kümmern.

Ein DBA muss die folgenden konsistenten Aufgaben erledigen:

  1. Erstellen Sie am Ende eines jeden Arbeitstages ein tägliches Backup der Datenbank
  2. Erstellen Sie am Ende jeder Woche ein wöchentliches Backup
  3. Erstellen Sie am Ende jedes Monats ein monatliches Backup.

Ein tägliches Backup dauert eine halbe Stunde und ist das Letzte, was ein DBA tut, wenn er den Tag verlässt. Obwohl sie Multitasking durchführen können, sobald der tägliche Backup-Prozess gestartet ist, müssen sie dennoch ein Auge darauf haben, wie sichergestellt wird, dass das Backup abgeschlossen wird. Dies liegt daran, dass die Sicherung auf der Sicherungsfestplatte gespeichert werden sollte, wenn sie fertig ist.

Selbst wenn wir die für wöchentliche und monatliche Sicherungen aufgewendete Zeit außer Acht lassen, erhöht sich die Zeit, die für die Durchführung der täglichen Sicherung erforderlich ist, je öfter Sie diesen Vorgang durchführen, da die Datenbank immer mehr Daten enthalten wird. Auch wenn die Durchführung einer täglichen Sicherung zu Beginn eine halbe Stunde dauert, kann sich dieser Zeitraum je nach Datenwachstum im Datenbanksystem in einigen Wochen oder Monaten auf etwa eine Stunde erhöhen.

Dies ist eine unveränderliche Aufgabe, die ständig wiederholt werden muss, sodass es für einen DBA möglich ist, sich zu langweilen oder die Konzentration zu verlieren und Fehler zu machen oder ein oder zwei Tage zu verpassen.

Wenn ein DBA diese SQL-Aufgabe automatisiert, spart er nicht nur Zeit und Mühe. Die Wahrscheinlichkeit, einen Fehler zu machen, wird minimiert.

Der tägliche Backup-Prozess kann so geplant werden, dass er nachts startet, wenn nur wenig Datenbankinteraktion stattfindet. Am nächsten Tag kann der DBA das Backup überprüfen und die letzte Stunde des Arbeitstages (die zuvor für den Backup-Prozess verwendet wurde) für wichtigere und dringendere Aufgaben nutzen.

Datenbankentwicklungs- und Bereitstellungsszenario

Betrachten wir ein sehr gängiges Beispiel für die Entwicklung und Bereitstellung von Datenbanken (ich schließe das Testen bewusst aus, um im Rahmen dieses Artikels zu bleiben). Ein Datenbankentwickler verwendet ein Datenbankentwicklungstool wie SQL Server Data Tools (SSDT), um neue Tabellen zu einer Datenbank hinzuzufügen. Sobald dies erledigt ist, speichern sie Änderungen im SQL-Datenbankprojekt. Diese Änderungen werden dann an den DBA oder das Infrastrukturteam gesendet, die diese Änderungen überprüfen und auf dem Live-Server bereitstellen müssen.

Die wichtigen Punkte sind wie folgt:

  1. Datenbankentwickler sollten ihre Datenbankänderungen gemäß den üblichen Verfahren nicht direkt auf dem Live-Server veröffentlichen
  2. Datenbankadministratoren oder das Infrastrukturteam, das den Live-Server verwaltet, können keine Änderungen an der Live-Datenbank veröffentlichen, bevor sie diese Änderungen überprüft haben, um sicherzustellen, dass sie die Konsistenz der Datenbank nicht in Frage stellen.

Wie Sie aus dem, was wir besprochen haben, verstehen können, ist die vollständige Automatisierung der Datenbankentwicklungs- und Bereitstellungsaufgaben nicht praktikabel und birgt viele Sicherheitsrisiken.

Die beste Entscheidung wäre also, die Schritte zu automatisieren, die von einem DBA oder einem Infrastrukturteam abhängen.

Aufgaben zur Pflege des Datenbankindex

Datenbankindizes spielen eine wichtige Rolle beim schnelleren Abrufen der Ergebnismenge (Zeilen) aus der/den Datenbank(en). Diese Indizes müssen jedoch mit der Zeit gewartet werden. Die Wartung des Datenbankindex kann manuell außerhalb der Spitzenzeiten oder automatisiert erfolgen. Dies kann eine sehr zeitaufwändige Aufgabe sein, daher ist es besser, diese Aufgabe zu automatisieren, insbesondere wenn so viele andere Datenbankserver-bezogene Dinge zu verwalten sind.

Einige Experten argumentieren jedoch mit dieser Sichtweise und empfehlen, die Indexpflege auf ein gewisses Maß einzuschränken, um den Prozess im Auge zu behalten oder dies sogar komplett manuell zu tun.

Wenn es um die Indexwartung geht, können die folgenden Dinge die Indexleistung der Datenbank verbessern:

  1. Index neu erstellen
  2. Index neu organisieren
  3. Index defragmentieren
  4. Statistiken aktualisieren

So automatisieren Sie SQL-Aufgaben

Sehen wir uns nun die grundlegenden Anforderungen für die Automatisierung einer SQL-Aufgabe an, gefolgt von einem sehr einfachen Beispiel.

Beispieldatenbank einrichten

Diese exemplarische Vorgehensweise erfordert die folgende Einzeltabellen-Beispieldatenbank mit dem Namen UniversityV6 wie folgt einzurichten:

-- (1) Create the UniversityV6 sample database
CREATE DATABASE UniversityV6;
GO

USE UniversityV6

CREATE TABLE [dbo].[Student] (
    [StudentId] INT           IDENTITY (1, 1) NOT NULL,
    [Name]      VARCHAR (30)  NULL,
    [Course]    VARCHAR (30)  NULL,
    [Marks]     INT           NULL,
    [ExamDate]  DATETIME2 (7) NULL,
    CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ([StudentId] ASC)
);
GO

Führen Sie das Skript aus, um die Beispieldatenbank zu erstellen:

Starten des SQL Server-Agenten

Die Automatisierung einer SQL-Aufgabe hängt normalerweise von einem SQL Server-Agenten ab, es sei denn, Sie entscheiden sich für eine alternative Route.

Als Erstes müssen Sie sicherstellen, dass ein SQL Server-Agent ausgeführt wird. Wenn es nicht läuft, müssen Sie es manuell starten und am Laufen halten.

Stellen Sie eine Verbindung zu einer SQL Server-Instanz her und suchen Sie im Objekt-Explorer nach dem SQL Server-Agent-Knoten. Wenn an diesem Knoten ein rotes „Stopp“-Symbol angezeigt wird, wurde er noch nicht gestartet:

Klicken Sie mit der rechten Maustaste auf SQL Server-Agent Knoten und klicken Sie auf Start:

Als nächstes müssen Sie bestätigen, dass Sie einen SQL Server-Agentendienst auf Ihrem Server starten möchten. Klicken Sie auf Ja dazu:

Nach dem Start wird neben dem SQL Server-Agent ein kleines grünes Symbol angezeigt. Sie können den Knoten jetzt auch erweitern:

Einen neuen Job erstellen

Klicken Sie mit der rechten Maustaste auf die Jobs Ordner und klicken Sie auf Neuer Job… :

Geben Sie „Automatische Aufgabe „UniversityV6 sichern““ ein “ und klicken Sie auf Schritte in der linken Navigationsleiste:

Neuen Jobschritt hinzufügen

Klicken Sie anschließend auf Neu , geben Sie „Backup UniversityV6“ als Schrittnamen ein, fügen Sie das folgende SQL-Skript hinzu und klicken Sie auf OK :

-- Backup the UniversityV6 sample database using the date time stamp
DECLARE @BackupName VARCHAR(100)
SET @BackupName=CONCAT('C:\Backup\UniversityV6-',FORMAT(GETDATE(),'yyyy-MM-dd-hh-mm-tt'),'.bak')
BACKUP DATABASE UniversityV6 TO [email protected] WITH COMPRESSION, INIT;
GO

Klicken Sie auf OK um die Einrichtung des Auftrags abzuschließen.

Erstellten Job anzeigen

Scrollen Sie nach unten zum SQL Server Agent und suchen Sie den neu erstellten Job:

Testen Sie den Job (automatisierte Aufgabe)

Klicken Sie mit der rechten Maustaste auf Automatisierte Aufgabe UniversityV6 sichern und klicken Sie auf Auftrag starten bei Schritt…:

Der Job wird gestartet und beendet:

Überprüfen Sie den Backup-Speicherort

Gehen Sie nun zu dem Ort, an dem diese automatisierte Aufgabe eine neue Sicherung erstellt hat:

Herzliche Glückwünsche! Sie haben die Aufgabe zum Erstellen einer Datenbanksicherung erfolgreich automatisiert. Sie können es jetzt auf einem beliebigen Backup-Laufwerk speichern, indem Sie einfach den Laufwerksbuchstabennamen ändern.

Bitte denken Sie daran, dass Sie ein Backup immer auf einem anderen Backup-Laufwerk als dem Systemlaufwerk C:speichern sollten. Sie können diese Aufgabe so planen, dass sie in regelmäßigen Abständen ausgeführt wird, indem Sie mit der rechten Maustaste auf den Job klicken und auf P klicken Eigenschaften , und klicken Sie dann auf Zeitpläne :

Dinge zu tun

Da Sie nun grundlegende Datenbanksicherungsaufgaben automatisieren können, versuchen Sie bitte Folgendes, um Ihre Fähigkeiten zu verbessern:

  1. Planen Sie diese Aufgabe so, dass sie eine Woche lang jeden Nachmittag als Test ausgeführt wird
  2. Erstellen Sie eine neue Tabelle mit dem Namen Statistiken in der Beispieldatenbank mit den folgenden Spalten:
    1. StatID (INT)
    2. Statistikdatum (DATETIME2)
    3. TotalRows (INT)

Testen Sie sich jetzt, indem Sie eine automatisierte Aufgabe (neuer Job) zum Protokollieren der Zeilenanzahl für den Student erstellen zusammen mit Datum/Uhrzeit in den Statistiken Tisch. Versuchen Sie, die Student-Tabelle regelmäßig zu füllen.

Planen Sie, dass die Aufgabe stündlich ausgeführt wird, und überprüfen Sie, ob die Statistiken Die Tabelle spiegelt Ihre Dateneinfügungen wider, indem sie Ihnen stündlich die Zeilenanzahl der Tabelle anzeigt.