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

So automatisieren Sie Wartungsaufgaben für SQL-Datenbanken mit SQLCMD

In diesem Artikel geht es um die Automatisierung von SQL-Datenbankwartungsaufgaben durch das Dienstprogramm SQLCMD, mit dem Sie T-SQL-Befehle direkt von der Eingabeaufforderung aus ausführen können, ohne SSMS (SQL Server Management Studio) zu verwenden.

Normalerweise erfordert die Automatisierung von Datenbankaufgaben SSMS (SQL Server Management Studio) zum Planen von Jobs, die diese Aufgaben ausführen, aber in diesem Artikel wird ein alternativer Ansatz verwendet, um Datenbankaufgaben zu automatisieren, ohne das dringend benötigte SSMS verwenden zu müssen.

Das SQLCMD-Dienstprogramm kann für Datenbankentwickler und DBAs eine echte Zeitersparnis sein, da sie die erforderlichen SQL-Skripts sofort über die Befehlszeile ausführen können, und die Automatisierung von Datenbankwartungsaufgaben mit dem SQLCMD-Dienstprogramm ist ein Plus.

Grundlagen der Automatisierung von SQL-Datenbankaufgaben

Lassen Sie uns einige grundlegende Konzepte für die Automatisierung von SQL-Datenbankwartungsaufgaben mit dem SQLCMD-Dienstprogramm durchgehen.

Was ist eine Datenbankwartungsaufgabe?

Eine Datenbankwartungsaufgabe ist, wie der Name schon sagt, eine Aufgabe, die bei der Verwaltung oder Wartung einer Datenbank hilft, um ihren reibungslosen Betrieb sicherzustellen.

Beispielsweise ist das tägliche Erstellen von Datenbanksicherungen eine Datenbankwartungsaufgabe, die sicherstellt, dass die Datenbank gesichert wird, sodass sie im Falle eines Vorfalls, der entweder die Datenbank beschädigt oder sie instabil macht, erfolgreich ohne Verlust wiederhergestellt werden kann irgendwelche Daten.

Wer führt Datenbankwartungsaufgaben durch?

In der Regel führen Fachleute, die für die Wartung des Datenbanksystems verantwortlich sind, wie z. B. Datenbankadministratoren, Datenbankwartungsaufgaben aus, dies kann sich jedoch unter bestimmten Umständen ändern.

Wie wird eine Datenbankwartungsaufgabe durchgeführt?

Eine Datenbankwartungsaufgabe wird normalerweise von Zeit zu Zeit manuell von einem Datenbankadministrator durchgeführt, oder sie kann auch so geplant werden, dass sie automatisch ausgeführt wird.

Was bedeutet die Automatisierung einer Datenbankwartungsaufgabe?

Das Automatisieren einer Datenbankwartungsaufgabe bedeutet, dass eine Datenbankwartungsaufgabe so geplant wird, dass sie automatisch ohne manuellen Eingriff ausgeführt wird.

Was sind die Vorteile der Automatisierung von Datenbankwartungsaufgaben?

Die Automatisierung von Datenbankwartungsaufgaben spart Zeit und Mühe, hilft bei der Standardisierung des Prozesses und erleichtert seine regelmäßige Ausführung, und rechtzeitige Warnungen, die für einen automatisierten Auftragsausfall konfiguriert werden, können auch den Prozess der Identifizierung der Ursache eines Problems beschleunigen, wenn dies der Fall ist Aufgabe schlägt fehl.

Wie können Sie die Datenbankwartungsaufgabe automatisieren?

Eine der erweiterten Anwendungen des SQLCMD-Dienstprogramms ist die Automatisierung von Datenbankwartungsaufgaben. In diesem Artikel werden wir Datenbankwartungsaufgaben automatisieren, ohne SSMS (SQL Server Management Studio) zu verwenden.

Windows-Taskplaner

Wir werden den Windows-Taskplaner nutzen, um Datenbankwartungsaufgaben zu automatisieren, für die kein SSMS (SQL Server Management Studio) erforderlich ist.

Voraussetzungen

In diesem Artikel wird davon ausgegangen, dass Sie über Grundkenntnisse zu Datenbankwartungsaufgaben verfügen, die durch Ausführen von T-SQL-Anweisungen ausgeführt werden, sowie über ein grundlegendes Verständnis des SQLCMD-Dienstprogramms.

Bitte lesen Sie den Artikel Basics of Running T-SQL Statements from Command Line using SQLCMD, um sich ein solides Verständnis der SQLCMD-Grundlagen zu verschaffen, bevor Sie mit der erweiterten Verwendung fortfahren.

Bitte lesen Sie auch den Artikel SQL-Datenbank-Wartungsaufgaben mit SQLCMD ausführen, um zu erfahren, wie Sie SQL-Datenbank-Wartungsaufgaben durchführen.

Dieser Artikel geht auch davon aus, dass eine Beispiel-Universitätsdatenbank erstellt wurde.

Bitte lesen Sie einen anderen Artikel Basics of Running T-SQL Statements from Command Line using SQLCMD, um eine Beispieldatenbank zu erstellen, oder verwenden Sie den folgenden T-SQL-Code, um die Beispieldatenbank namens University: einzurichten

-- (1) Create University sample database
CREATE DATABASE University;
GO

USE University

-- (2) Create Course table
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES T WHERE T.TABLE_NAME='Course') 
DROP TABLE dbo.Course 

CREATE TABLE [dbo].[Course] (
    [CourseId] INT           IDENTITY (1, 1) NOT NULL,
    [Name]     VARCHAR (30)  NOT NULL,
    [Detail]   VARCHAR (200) NULL,
    CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED ([CourseId] ASC)
);

-- (3) Create Student table
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES T WHERE T.TABLE_NAME='Student') 
DROP TABLE dbo.Student 

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)
);

-- (4) Populate Course table
SET IDENTITY_INSERT [dbo].[Course] ON
INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (1, N'DevOps for Databases', N'This is about DevOps for Databases')
INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (2, N'Power BI Fundamentals', N'This is about Power BI Fundamentals')
INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (3, N'T-SQL Programming', N'About T-SQL Programming')
INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (4, N'Tabular Data Modeling', N'This is about Tabular Data Modeling')
INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (5, N'Analysis Services Fundamentals', N'This is about Analysis Services Fundamentals')
SET IDENTITY_INSERT [dbo].[Course] OFF

-- (5) Populate Student table
SET IDENTITY_INSERT [dbo].[Student] ON
INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (1, N'Asif', N'Database Management System', 80, N'2016-01-01 00:00:00')
INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (2, N'Peter', N'Database Management System', 85, N'2016-01-01 00:00:00')
INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (3, N'Sam', N'Database Management System', 85, N'2016-01-01 00:00:00')
INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (4, N'Adil', N'Database Management System', 85, N'2016-01-01 00:00:00')
INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (5, N'Naveed', N'Database Management System', 90, N'2016-01-01 00:00:00')
SET IDENTITY_INSERT [dbo].[Student] OFF
GO

Automatisierung der Aufgabe der Sicherung der Universitätsdatenbank

Werfen wir einen Blick auf das Szenario, in dem die Datenbanksicherung automatisiert werden muss.

Voraussetzung:Automatisieren Sie die Sicherung der Hochschuldatenbank

Ein DBA wurde gebeten, Datenbanksicherungen zu automatisieren, die Datum und Uhrzeit der Sicherung anzeigen, um Zeit zu sparen und Verwirrung über die letzte Sicherung zu vermeiden und den Gesamtprozess zu beschleunigen.

Um diese Geschäftsanforderungen zu erfüllen, muss ein SQLCMD-Skript, das eine Datenbanksicherung erstellt, im Windows-Taskplaner ausgeführt werden.

Ordner für Datenbanksicherung und Skript erstellen

Erstellen Sie zunächst einen Ordner mit dem Namen Demo auf Laufwerk C und erstellen Sie dann die folgenden Unterordner im Demo Ordner:

  1. Sicherungen
  2. Skripte

Bitte beachten Sie, dass wir Laufwerk C nur zu Demonstrationszwecken verwenden. Bitte verwenden Sie im Echtzeitszenario ein Backup-Laufwerk.

Erstellen eines SQL-Datenbank-Sicherungsskripts

Erstellen Sie ein SQL-Datenbank-Sicherungsskript und speichern Sie es als 01-Backup-University-sql-script.sql in C:\Demo\Scripts die auch die Informationen über Datum und Uhrzeit der Sicherung wie folgt enthält:

-- Creating University database backup with date and time 
DECLARE @Backup NVARCHAR(400)
SET @Backup=CONCAT('C:\Demo\Backups\University-',(FORMAT(GETDATE(),'yyyy-MM-dd-hh-mm-ss-tt')),'.bak')
BACKUP DATABASE [University] TO  DISK = @Backup
WITH NOFORMAT, NOINIT,  NAME = N'University-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

SQL-Skript im Skriptordner speichern

Speichern Sie das SQL-Sicherungsskript unter C:\Demo\Scripts Ordner.

Erstellen des SQLCMD-Sicherungsskripts

Das Datenbanksicherungsskript, das auf das SQL-Skript verweist, das SQLCMD verwendet, wird wie folgt erstellt:

Sqlcmd –S . –i c:\Demo\Scripts\01-Bakup-University-sql-script.sql

Wobei „.“ (Punkt) ist hier die standardmäßige unbenannte SQL-Instanz, die durch eine benannte SQL-Instanz wie .\. ersetzt werden kann

Testen Sie das Ausführen des SQLCMD-Sicherungsskripts

Führen Sie das obige SQLCMD-Skript von der Befehlszeile aus, um das Sicherungsskript zu testen:

Das Skript wurde erfolgreich ausgeführt, also können wir loslegen.

Rufen Sie die Sicherungen auf Ordner und löschen Sie die Sicherung, die als Ergebnis des Testlaufs erstellt wurde.

Erstellen einer Batchdatei zum Verweisen auf das SQLCMD-Skript

Erstellen Sie eine Batchdatei mit dem Namen 02-Run-Sqlcmd-Backup-script.bat Verwenden Sie Notepad und speichern Sie es als .bat:

@Echo off
sqlcmd -E -S . -i c:\Demo\Scripts\01-Bakup-University-sql-script.sql

Bitte beachten Sie, dass es eine kleine Änderung im SQLCMD-Skript gibt :-E wird hinzugefügt , was eigentlich ist die standardmäßige Authentifizierungsoption und muss laut Microsoft-Dokumentation nicht angegeben werden.

Dies wird wie folgt dargestellt:

Datenbanksicherungsaufgabe im Windows-Taskplaner planen

Öffnen Sie den Windows-Taskplaner, indem Sie Taskplaner in die Windows-Suche eingeben und dann auf Taskplaner klicken :

Sobald der Windows-Taskplaner geöffnet ist, klicken Sie auf Einfachen Task erstellen… aus den Optionen auf der rechten Seite und geben Sie Aufgabe zur Sicherung der Universitätsdatenbank ein im Namen Eingabefeld und klicken Sie auf Weiter :

Als nächstes richten Sie die Häufigkeit der Aufgabe ein, indem Sie die Standardeinstellungen beibehalten, die täglich sind:

Stellen Sie die tägliche Zeit ein, zu der diese Aufgabe aktiviert wird (es wird empfohlen, die Zeit auf zwei bis drei Minuten plus Ihre aktuelle Uhrzeit einzustellen, um sofort zu überprüfen, ob sie funktioniert):

Wir müssen auch Programm starten auswählen auf die Frage, was diese Aufgabe ausführen soll:

Zeigen Sie als Nächstes auf die Stapeldatei, die SQLCMD aufruft, um eine Sicherung der Universitätsdatenbank zu erstellen, und klicken Sie auf Weiter :

Klicken Sie auf Fertig stellen um den Vorgang abzuschließen.

Es ist möglich, dass Sie mehr Zeit mit dem verbracht haben, was im Jobplan eingerichtet wurde, um die Jobeinrichtung abzuschließen, was bedeutet, dass Sie bis zum nächsten Tag warten müssen, um zu sehen, ob die Aufgabe ausgeführt wird oder nicht.

Es gibt eine Problemumgehung, Sie müssen die Aufgabe 2-3 Minuten vor Ihrer aktuellen Zeit neu planen, damit sie in 2-3 Minuten ausgeführt wird, anstatt den ganzen Tag zu warten:

Warten Sie nun, bis die Aufgabe automatisch ausgeführt wird, und überprüfen Sie nach der angegebenen Zeit den Sicherungsordner, den wir in der Demo erstellt haben Ordner auf Laufwerk C:

Herzlichen Glückwunsch, die Datenbankwartungsaufgabe wurde mithilfe des Windows-Taskplaners erfolgreich automatisiert, der eine Stapeldatei aufruft, die das SQLCMD-Skript ausführt, um eine Sicherungsdatei zu erstellen.

Bitte löschen Sie die automatisierte Aufgabe, die zu Demozwecken erstellt wurde, sobald Sie mit der exemplarischen Vorgehensweise fertig sind und nicht daran interessiert sind, sie weiter auszuführen.

Dinge zu tun

Nachdem Sie diesen Artikel durchgearbeitet haben und bereit sind, Datenbankwartungsaufgaben wie das Sichern einer Datenbank mit dem SQLCMD-Dienstprogramm und dem Windows-Taskplaner zu automatisieren, können Sie Ihre Fähigkeiten weiter verbessern, indem Sie die folgenden Dinge ausprobieren:

  1. Bitte versuchen Sie, die Sicherung einer Beispieldatenbank SQLBookShop einzurichten und zu automatisieren im Artikel Vereinfachen von Unit-Tests der gespeicherten Hauptprozedur, die auch eine Hilfsprozedur aufruft, erwähnt.
  2. Bitte versuchen Sie, mehrere Datenbanken zu erstellen und ihre Sicherungen mit dem SQLCMD-Dienstprogramm mit dem Windows-Taskplaner zu automatisieren.
  3. Bitte versuchen Sie, die Sicherungs- und Wiederherstellungsprozesse der Datenbank zu automatisieren, indem Sie zwei Batch-Dateien erstellen, eine für die Sicherung und die andere für die Wiederherstellung der Datenbank, die auf SQLCMD-Skripts verweist, und den Job im Windows-Taskplaner so planen, dass er täglich ausgeführt wird.

Nützliches Tool:

dbForge Studio für SQL Server – leistungsstarke IDE für die Verwaltung, Verwaltung, Entwicklung, Datenberichterstattung und -analyse von SQL Server.