Database
 sql >> Baza danych >  >> RDS >> Database

Jak zautomatyzować zadania konserwacji bazy danych SQL za pomocą SQLCMD

Ten artykuł dotyczy automatyzacji zadań konserwacji bazy danych SQL za pomocą narzędzia SQLCMD, które pozwala uruchamiać polecenia T-SQL bezpośrednio z wiersza poleceń bez użycia SSMS (SQL Server Management Studio).

Zazwyczaj automatyzacja zadań bazy danych wymaga SSMS (SQL Server Management Studio) do planowania zadań, które uruchamiają te zadania, ale w tym artykule zastosowano alternatywne podejście do automatyzacji zadań bazy danych bez konieczności korzystania z bardzo potrzebnego SSMS.

Narzędzie SQLCMD może zaoszczędzić czas rzeczywisty dla programistów baz danych i administratorów baz danych, ponieważ mogą oni natychmiast uruchomić niezbędne skrypty SQL z wiersza poleceń, a automatyzacja zadań konserwacji bazy danych za pomocą narzędzia SQLCMD jest dodatkowym atutem.

Podstawy automatyzacji zadań bazy danych SQL

Przeanalizujmy kilka podstawowych koncepcji automatyzacji zadań konserwacji bazy danych SQL za pomocą narzędzia SQLCMD.

Co to jest zadanie konserwacji bazy danych?

Zadanie konserwacji bazy danych, jak sama nazwa wskazuje, to zadanie, które pomaga w zarządzaniu lub utrzymywaniu bazy danych w celu zapewnienia jej płynnego działania.

Na przykład codzienne tworzenie kopii zapasowych bazy danych jest zadaniem konserwacji bazy danych, które zapewnia wykonanie kopii zapasowej bazy danych, dzięki czemu w przypadku jakiegokolwiek incydentu, który kończy się uszkodzeniem bazy danych lub jej niestabilnością, można ją pomyślnie przywrócić bez utraty dowolne dane.

Kto wykonuje zadania konserwacji bazy danych?

Zazwyczaj specjaliści odpowiedzialni za konserwację systemu baz danych, tacy jak administratorzy baz danych, wykonują zadania związane z konserwacją bazy danych, jednak w pewnych okolicznościach może to się zmienić.

Jak wykonywane jest zadanie konserwacji bazy danych?

Zadanie konserwacji bazy danych jest zwykle wykonywane ręcznie przez administratora bazy danych od czasu do czasu lub może być również zaplanowane do automatycznego uruchomienia.

Co oznacza automatyzacja zadania konserwacji bazy danych?

Automatyzacja zadania konserwacji bazy danych oznacza zaplanowanie automatycznego uruchamiania zadania konserwacji bazy danych bez ręcznej interwencji.

Jakie są korzyści z automatyzacji zadań konserwacji bazy danych?

Automatyzacja zadań związanych z konserwacją bazy danych oszczędza czas i wysiłek, pomaga ujednolicić proces i ułatwia jego regularne wykonywanie, a alerty skonfigurowane na czas dla niepowodzenia zadania automatycznego mogą również przyspieszyć proces identyfikacji przyczyny problemu, jeśli zadanie nie powiodło się.

Jak zautomatyzować zadanie konserwacji bazy danych?

Jednym z zaawansowanych zastosowań narzędzia SQLCMD jest automatyzacja zadań związanych z obsługą bazy danych. W tym artykule zamierzamy zautomatyzować zadania związane z konserwacją bazy danych bez użycia SSMS (SQL Server Management Studio).

Harmonogram zadań Windows

Wykorzystamy Harmonogram zadań systemu Windows, aby zautomatyzować zadania konserwacji bazy danych, które nie wymagają SSMS (SQL Server Management Studio).

Wymagania wstępne

W tym artykule zakładamy, że posiadasz podstawową wiedzę na temat zadań związanych z obsługą bazy danych wykonywanych przez uruchamianie instrukcji T-SQL oraz podstawową wiedzę na temat narzędzia SQLCMD.

Zapoznaj się z artykułem Podstawy uruchamiania instrukcji T-SQL z wiersza poleceń przy użyciu SQLCMD, aby uzyskać solidne zrozumienie podstaw SQLCMD, zanim przejdziesz do jego zaawansowanego użytkowania.

Zapoznaj się również z artykułem Uruchamianie zadań konserwacji bazy danych SQL za pomocą SQLCMD, aby dowiedzieć się, jak wykonywać zadania konserwacji bazy danych SQL.

W tym artykule założono również, że została utworzona przykładowa baza danych Uniwersytetu.

Zapoznaj się z innym artykułem Podstawy uruchamiania instrukcji T-SQL z wiersza poleceń przy użyciu SQLCMD do utworzenia przykładowej bazy danych lub użyj poniższego kodu T-SQL, aby skonfigurować przykładową bazę danych o nazwie Uniwersytet:

-- (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

Automatyzacja zadania tworzenia kopii zapasowej bazy danych Uczelni

Rzućmy okiem na scenariusz, w którym tworzenie kopii zapasowych bazy danych musi być zautomatyzowane.

Wymaganie:zautomatyzuj tworzenie kopii zapasowej bazy danych uczelni

DBA został poproszony o zautomatyzowanie tworzenia kopii zapasowych bazy danych pokazujących datę i godzinę kopii zapasowej, aby zaoszczędzić czas i uniknąć nieporozumień dotyczących najnowszej kopii zapasowej i przyspieszyć cały proces.

Aby spełnić te wymagania biznesowe, w Harmonogramie zadań systemu Windows należy uruchomić skrypt SQLCMD, który tworzy kopię zapasową bazy danych.

Tworzenie folderów do tworzenia kopii zapasowych bazy danych i skryptów

Najpierw utwórz folder o nazwie Demo na dysku C a następnie utwórz następujące podfoldery w Demo folder:

  1. Kopie zapasowe
  2. Skrypty

Pamiętaj, że używamy dysku C wyłącznie do celów demonstracyjnych, użyj dysku zapasowego w scenariuszu czasu rzeczywistego.

Tworzenie skryptu kopii zapasowej bazy danych SQL

Utwórz skrypt kopii zapasowej bazy danych SQL i zapisz go jako 01-Backup-University-sql-script.sql w C:\Demo\Scripts który zawiera również informacje o dacie i godzinie wykonania kopii zapasowej w następujący sposób:

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

Zapisywanie skryptu SQL w folderze skryptów

Zapisz skrypt kopii zapasowej SQL w C:\Demo\Scripts folder.

Tworzenie skryptu kopii zapasowej SQLCMD

Skrypt kopii zapasowej bazy danych odwołujący się do skryptu SQL przy użyciu SQLCMD jest tworzony w następujący sposób:

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

Gdzie „.” (kropka) to domyślna nienazwana instancja SQL, którą można zastąpić nazwaną instancją SQL, taką jak .\.

Test uruchamiania skryptu kopii zapasowej SQLCMD

Uruchom powyższy skrypt SQLCMD z wiersza poleceń, aby przetestować skrypt kopii zapasowej:

Skrypt działał pomyślnie, więc dobrze jest iść.

Przejdź do Kopie zapasowe folder i usuń kopię zapasową utworzoną w wyniku uruchomienia testowego.

Tworzenie pliku wsadowego w celu odniesienia się do skryptu SQLCMD

Utwórz plik wsadowy o nazwie 02-Run-Sqlcmd-Backup-script.bat używając Notatnika i zapisz go jako .bat:

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

Pamiętaj, że nastąpiła niewielka zmiana w skrypcie SQLCMD :-E jest dodawane , czyli w rzeczywistości domyślna opcja uwierzytelniania i nie musi być określana zgodnie z dokumentacją Microsoft.

Jest to zilustrowane następująco:

Zaplanuj zadanie kopii zapasowej bazy danych w Harmonogramie zadań Windows

Otwórz Harmonogram zadań Windows, wpisując Harmonogram zadań w wyszukiwarce Windows, a następnie kliknij Harmonogram zadań :

Po otwarciu Harmonogramu zadań systemu Windows kliknij Utwórz podstawowe zadanie… z opcji po prawej stronie i wpisz Kopia zapasowa uniwersyteckiego zadania bazy danych w Nazwie pole wprowadzania i kliknij Dalej :

Następnie ustaw częstotliwość zadania, pozostawiając ustawienia domyślne, czyli codziennie:

Ustaw dzienną godzinę, o której to zadanie zostanie aktywowane (zaleca się ustawienie czasu od dwóch do trzech minut plus aktualny czas, aby natychmiast sprawdzić, czy działa):

Musimy również wybrać Uruchom program na pytanie, co ma wykonać to zadanie:

Następnie wskaż plik wsadowy, który wywołuje SQLCMD, aby utworzyć kopię zapasową bazy danych Uniwersytetu i kliknij Dalej :

Kliknij Zakończ aby zakończyć proces.

Możliwe, że poświęciłeś więcej czasu na to, co zostało ustawione w harmonogramie zadań, aby ukończyć konfigurację zadania, co oznacza, że ​​musisz poczekać do następnego dnia, aby sprawdzić, czy zadanie jest uruchomione, czy nie.

Istnieje obejście — musisz ponownie przełożyć zadanie 2-3 minuty przed bieżącym czasem, aby zobaczyć, jak działa w ciągu 2-3 minut, zamiast czekać przez cały dzień:

Teraz poczekaj, aż zadanie uruchomi się automatycznie i po określonym czasie sprawdź folder kopii zapasowej, który utworzyliśmy w Demo folder na dysku C:

Gratulacje, zadanie konserwacji bazy danych zostało pomyślnie zautomatyzowane za pomocą Harmonogramu zadań systemu Windows, który wywołuje plik wsadowy uruchamiający skrypt SQLCMD w celu utworzenia pliku kopii zapasowej.

Usuń zadanie automatyczne, które zostało utworzone do celów demonstracyjnych, gdy skończysz z instrukcją i nie chcesz go dalej uruchamiać.

Rzeczy do zrobienia

Teraz, gdy po przeczytaniu tego artykułu jesteś gotowy do zautomatyzowania zadań związanych z konserwacją bazy danych, takich jak tworzenie kopii zapasowej bazy danych za pomocą narzędzia SQLCMD i Harmonogramu zadań systemu Windows, możesz dalej doskonalić swoje umiejętności, próbując następujących rzeczy:

  1. Spróbuj skonfigurować i zautomatyzować tworzenie kopii zapasowej przykładowej bazy danych SQLBookShop wspomniane w artykule Upraszczanie testów jednostkowych głównej procedury składowanej, która również wywołuje procedurę użytkową.
  2. Spróbuj utworzyć wiele baz danych i zautomatyzować ich kopie zapasowe za pomocą narzędzia SQLCMD z Harmonogramem zadań systemu Windows.
  3. Spróbuj zautomatyzować procesy tworzenia kopii zapasowych i przywracania bazy danych, tworząc dwa pliki wsadowe, jeden do tworzenia kopii zapasowych, a drugi do przywracania bazy danych, odwołując się do skryptów SQLCMD i zaplanuj codzienne uruchamianie zadania w Harmonogramie zadań systemu Windows.

Przydatne narzędzie:

dbForge Studio dla SQL Server – potężne IDE do zarządzania, administrowania, rozwoju, raportowania i analizy danych SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aqua Data Studio

  2. Modelowanie otwartego rynku dla edukacji

  3. 4 sposoby na uzyskanie definicji procedury składowanej przy użyciu języka Transact-SQL

  4. Przechowywana procedura usuwania zduplikowanych rekordów w tabeli SQL

  5. Agregaty i partycjonowanie