Tento článek je o automatizaci úloh údržby databáze SQL pomocí nástroje SQLCMD, který vám umožní spouštět příkazy T-SQL přímo z příkazového řádku bez použití SSMS (SQL Server Management Studio).
Automatizace databázových úloh obvykle vyžaduje SSMS (SQL Server Management Studio) pro plánování úloh, které tyto úlohy spouštějí, ale v tomto článku je použit alternativní přístup k automatizaci databázových úloh, aniž byste museli používat tolik potřebný SSMS.
Nástroj SQLCMD může vývojářům databází a správcům databází šetřit v reálném čase, protože mohou okamžitě spouštět potřebné skripty SQL z příkazového řádku a automatizace úloh údržby databáze pomocí nástroje SQLCMD je výhodou.
Základy automatizace úloh databáze SQL
Pojďme si projít některé základní koncepty pro automatizaci úloh údržby databáze SQL pomocí nástroje SQLCMD.
Co je to úloha údržby databáze?
Úloha údržby databáze, jak název napovídá, je úloha, která pomáhá při správě nebo údržbě databáze, aby byl zajištěn její hladký provoz.
Například vytváření záloh databáze na denní bázi je úkol údržby databáze, který zajišťuje zálohování databáze, takže v případě jakéhokoli incidentu, který skončí buď poškozením databáze, nebo její nestabilitou, ji lze úspěšně obnovit bez ztráty. jakákoli data.
Kdo provádí úlohy údržby databáze?
Úlohy údržby databáze obvykle provádějí profesionálové odpovědní za údržbu databázového systému, jako jsou administrátoři databází, což se však za určitých okolností může změnit.
Jak se provádí úloha údržby databáze?
Úlohu údržby databáze obvykle čas od času provádí manuálně správce databáze, nebo lze také naplánovat její automatické spuštění.
Co znamená automatizace úlohy údržby databáze?
Automatizace úlohy údržby databáze znamená naplánování úlohy údržby databáze tak, aby se spouštěla automaticky bez jakéhokoli ručního zásahu.
Jaké jsou výhody automatizace úloh údržby databáze?
Automatizace úloh údržby databáze šetří čas a úsilí, pomáhá standardizovat proces a usnadňuje jeho pravidelné provádění a včasná upozornění nakonfigurovaná pro selhání automatizované úlohy mohou také urychlit proces identifikace příčiny problému, pokud úkol se nezdaří.
Jak můžete automatizovat úlohy údržby databáze?
Jedním z pokročilých použití obslužného programu SQLCMD je automatizace úloh údržby databáze. V tomto článku budeme automatizovat úlohy údržby databáze bez použití SSMS (SQL Server Management Studio).
Plánovač úloh systému Windows
Využijeme Plánovač úloh systému Windows k automatizaci úloh údržby databáze, které nevyžadují SSMS (SQL Server Management Studio).
Předpoklady
Tento článek předpokládá, že máte základní znalosti o úlohách údržby databáze prováděných spouštěním příkazů T-SQL spolu se základními znalostmi o nástroji SQLCMD.
Než přistoupíte k jeho pokročilému použití, přečtěte si prosím článek Základy spouštění příkazů T-SQL z příkazového řádku pomocí SQLCMD, abyste získali dobré pochopení základů SQLCMD.
Přečtěte si také článek Spouštění úloh údržby databáze SQL pomocí SQLCMD, kde se dozvíte, jak provádět úlohy údržby databáze SQL.
Tento článek také předpokládá, že byla vytvořena ukázková univerzitní databáze.
Přečtěte si prosím jiný článek Základy spouštění příkazů T-SQL z příkazového řádku pomocí SQLCMD k vytvoření ukázkové databáze nebo použijte následující kód T-SQL k nastavení ukázkové databáze s názvem Univerzita:
-- (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
Automatizace úlohy zálohování univerzitní databáze
Podívejme se na scénář, kdy je potřeba automatizovat zálohování databáze.
Požadavek:Automatizace zálohování univerzitní databáze
DBA byl požádán, aby zautomatizoval zálohování databáze zobrazující datum a čas zálohování, aby se ušetřil čas a předešlo se zmatkům ohledně poslední zálohy a urychlil se celkový proces.
Aby byly splněny tyto obchodní požadavky, je třeba v Plánovači úloh systému Windows spustit skript SQLCMD, který vytváří zálohu databáze.
Vytvoření složek pro zálohování databáze a skript
Nejprve vytvořte složku s názvem Demo na disku C a poté vytvořte následující podsložky v Ukázce složka:
- Zálohy
- Skripty
Upozorňujeme, že disk C používáme pouze pro účely ukázky, použijte prosím záložní disk ve scénáři v reálném čase.
Vytvoření skriptu zálohování databáze SQL
Vytvořte skript zálohování databáze SQL a uložte jej jako 01-Backup-University-sql-script.sql v C:\Demo\Scripts který také obsahuje následující informace o datu a čase zálohy:
-- 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
Uložení skriptu SQL do složky skriptů
Uložte záložní skript SQL do C:\Demo\Scripts složka.
Vytvoření SQLCMD Backup Script
Záložní skript databáze odkazující na skript SQL pomocí SQLCMD je vytvořen následovně:
Sqlcmd –S . –i c:\Demo\Scripts\01-Bakup-University-sql-script.sql
Kde „.“ (tečka) je zde výchozí nepojmenovaná instance SQL, kterou lze nahradit pojmenovanou instancí SQL, například .\
Test spuštění SQLCMD Backup Script
Spuštěním výše uvedeného skriptu SQLCMD z příkazového řádku otestujte záložní skript:
Skript proběhl úspěšně, takže můžeme začít.
Přejděte na Zálohy a odstraňte zálohu, která byla vytvořena jako výsledek testovacího běhu.
Vytvoření dávkového souboru odkazujícího na skript SQLCMD
Vytvořte dávkový soubor s názvem 02-Run-Sqlcmd-Backup-script.bat pomocí programu Poznámkový blok a uložte jej jako .bat:
@Echo off sqlcmd -E -S . -i c:\Demo\Scripts\01-Bakup-University-sql-script.sql
Upozorňujeme, že došlo k mírné změně ve skriptu SQLCMD :Přidá se -E , což je ve skutečnosti výchozí možnost ověřování a není nutné ji specifikovat podle dokumentace společnosti Microsoft.
To je znázorněno následovně:
Naplánujte úlohu zálohování databáze v Plánovači úloh systému Windows
Otevřete Plánovač úloh systému Windows zadáním příkazu Plánovač úloh do vyhledávání systému Windows a poté klikněte na Plánovač úloh :
Po otevření Plánovače úloh systému Windows klikněte na Vytvořit základní úlohu… z možností napravo a zadejte Zálohování úlohy univerzitní databáze v Název vstupního pole a klikněte na Další :
Dále nastavte frekvenci úlohy ponecháním výchozího nastavení, které je denně:
Nastavte denní čas, kdy bude tato úloha aktivována (doporučuje se nastavit čas od dvou do tří minut plus aktuální čas, abyste okamžitě ověřili, že funguje):
Musíme také vybrat Spustit program na otázku, co chceme, aby tento úkol provedl:
Dále ukažte na dávkový soubor, který volá SQLCMD k vytvoření zálohy univerzitní databáze, a klikněte na Další :
Klikněte na Dokončit k dokončení procesu.
Je možné, že jste strávili více času tím, co bylo nastaveno v plánu úlohy, abyste dokončili nastavení úlohy, což znamená, že musíte počkat na další den, abyste viděli, zda úloha běží nebo ne.
Existuje náhradní řešení – musíte úkol znovu naplánovat 2–3 minuty před aktuálním časem, abyste viděli, že běží za 2–3 minuty, místo abyste čekali celý den:
Nyní počkejte, až se úloha spustí automaticky, a po zadané době zkontrolujte záložní složku, kterou jsme vytvořili v Ukázce složku na disku C:
Gratulujeme, úloha údržby databáze byla úspěšně automatizována pomocí Plánovače úloh systému Windows, který volá dávkový soubor, který spustí skript SQLCMD za účelem vytvoření záložního souboru.
Jakmile s tímto návodem skončíte a nebudete mít zájem o další spuštění, smažte prosím automatizovanou úlohu, která byla vytvořena pro účely ukázky.
Co dělat
Nyní, když jste po prostudování tohoto článku připraveni automatizovat úlohy údržby databáze, jako je zálohování databáze pomocí nástroje SQLCMD a Windows Task Scheduler, můžete své dovednosti dále zlepšit tím, že vyzkoušíte následující věci:
- Zkuste prosím nastavit a automatizovat zálohování ukázkové databáze SQLBookShop zmíněný v článku Zjednodušení testování jednotek hlavní uložená procedura, která také nazývá obslužnou proceduru.
- Zkuste prosím vytvořit více databází a automatizovat jejich zálohování pomocí nástroje SQLCMD s Plánovačem úloh systému Windows.
- Zkuste zautomatizovat procesy zálohování a obnovy databáze vytvořením dvou dávkových souborů, jednoho pro zálohování a druhého pro obnovu databáze s odkazem na skripty SQLCMD a naplánováním úlohy v Plánovači úloh systému Windows tak, aby se spouštěla denně.
Užitečný nástroj:
dbForge Studio pro SQL Server – výkonné IDE pro správu, administraci, vývoj, reportování a analýzu SQL Serveru.