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

Come automatizzare le attività di manutenzione del database SQL utilizzando SQLCMD

Questo articolo riguarda l'automazione delle attività di manutenzione del database SQL tramite l'utilità SQLCMD che consente di eseguire comandi T-SQL direttamente dal prompt dei comandi senza utilizzare SSMS (SQL Server Management Studio).

In genere, l'automazione delle attività del database richiede SSMS (SQL Server Management Studio) per la pianificazione dei processi che eseguono queste attività, ma in questo articolo viene utilizzato un approccio alternativo per automatizzare le attività del database senza dover utilizzare il tanto necessario SSMS.

L'utilità SQLCMD può far risparmiare tempo reale agli sviluppatori di database e ai DBA poiché possono eseguire immediatamente gli script SQL necessari dalla riga di comando e automatizzare le attività di manutenzione del database con l'utilità SQLCMD è un vantaggio.

Nozioni di base sull'automazione delle attività del database SQL

Esaminiamo alcuni concetti di base per automatizzare le attività di manutenzione del database SQL con l'utilità SQLCMD.

Che cos'è un'attività di manutenzione del database?

Un'attività di manutenzione del database, come indica il nome, è un'attività che aiuta a gestire o mantenere un database per garantirne il corretto funzionamento.

Ad esempio, la creazione di backup del database su base giornaliera è un'attività di manutenzione del database che garantisce il backup del database, in modo che in caso di qualsiasi incidente, che finisce per danneggiare il database o renderlo instabile, può essere ripristinato correttamente senza perdere qualsiasi dato.

Chi esegue le attività di manutenzione del database?

In genere, i professionisti responsabili della manutenzione del sistema di database, come gli amministratori di database, eseguono attività di manutenzione del database, tuttavia, questo può cambiare in determinate circostanze.

Come viene eseguita un'attività di manutenzione del database?

Un'attività di manutenzione del database viene normalmente eseguita manualmente da un amministratore del database di tanto in tanto, oppure può anche essere pianificata per l'esecuzione automatica.

Cosa significa automatizzare un'attività di manutenzione del database?

Automatizzare un'attività di manutenzione del database significa programmare un'attività di manutenzione del database in modo che venga eseguita automaticamente senza alcun intervento manuale.

Quali sono i vantaggi dell'automazione delle attività di manutenzione del database?

L'automazione delle attività di manutenzione del database consente di risparmiare tempo e fatica, aiuta a standardizzare il processo e semplifica l'esecuzione su base regolare e avvisi tempestivi configurati per un errore di lavoro automatizzato possono anche accelerare il processo di identificazione della causa di un problema se il compito non riesce.

Come puoi automatizzare l'attività di manutenzione del database?

Uno degli usi avanzati dell'utilità SQLCMD è l'automazione delle attività di manutenzione del database. In questo articolo automatizzeremo le attività di manutenzione del database senza utilizzare SSMS (SQL Server Management Studio).

Utilità di pianificazione di Windows

Sfrutteremo l'Utilità di pianificazione di Windows per automatizzare le attività di manutenzione del database che non richiedono SSMS (SQL Server Management Studio).

Prerequisiti

Questo articolo presuppone che tu abbia una conoscenza di base delle attività di manutenzione del database eseguite eseguendo istruzioni T-SQL insieme a una conoscenza di base dell'utilità SQLCMD.

Fare riferimento all'articolo Nozioni di base sull'esecuzione di istruzioni T-SQL dalla riga di comando utilizzando SQLCMD per ottenere una solida comprensione delle nozioni di base di SQLCMD, prima di procedere al suo utilizzo avanzato.

Fare riferimento anche all'articolo Esecuzione di attività di manutenzione del database SQL utilizzando SQLCMD per informazioni su come eseguire attività di manutenzione del database SQL.

Questo articolo presuppone inoltre che sia stato creato un database di esempio dell'Università.

Consulta un altro articolo Nozioni di base sull'esecuzione di istruzioni T-SQL dalla riga di comando utilizzando SQLCMD per creare un database di esempio o utilizzare il codice T-SQL seguente per configurare il database di esempio denominato Università:

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

Automatizzazione dell'attività di backup del database di Ateneo

Diamo un'occhiata allo scenario in cui il backup del database deve essere automatizzato.

Requisito:automatizzare il backup del database di Ateneo

A un DBA è stato chiesto di automatizzare i backup del database mostrando la data e l'ora del backup per risparmiare tempo ed evitare confusione sull'ultimo backup e accelerare il processo generale.

Per soddisfare questi requisiti aziendali, è necessario eseguire uno script SQLCMD che crea il backup del database nell'Utilità di pianificazione di Windows.

Creazione di cartelle per il backup del database e lo script

Innanzitutto, crea una cartella denominata Demo sull'unità C e quindi crea le seguenti sottocartelle nella Demo cartella:

  1. Backup
  2. Script

Tieni presente che utilizziamo l'unità C solo a scopo dimostrativo, utilizza un'unità di backup in uno scenario in tempo reale.

Creazione dello script di backup del database SQL

Crea uno script di backup del database SQL e salvalo come 01-Backup-University-sql-script.sql in C:\Demo\Script che contiene anche le informazioni sulla data e l'ora del backup come segue:

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

Salvataggio dello script SQL nella cartella degli script

Salva lo script di backup SQL in C:\Demo\Scripts cartella.

Creazione dello script di backup SQLCMD

Lo script di backup del database riferito allo script SQL che utilizza SQLCMD viene creato come segue:

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

Dove "." (punto) è l'istanza SQL senza nome predefinita che può essere sostituita da un'istanza SQL denominata come .\.

Test dell'esecuzione dello script di backup SQLCMD

Esegui lo script SQLCMD sopra dalla riga di comando per testare lo script di backup:

Lo script è stato eseguito correttamente, quindi siamo a posto.

Vai a Backup cartella ed elimina il backup che viene creato a seguito del test eseguito.

Creazione di un file batch per fare riferimento allo script SQLCMD

Crea un file batch con il nome 02-Run-Sqlcmd-Backup-script.bat usando Blocco note e salvalo come .bat:

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

Tieni presente che c'è una leggera modifica nello script SQLCMD :-E aggiunta , che in realtà è l'opzione di autenticazione predefinita e non deve essere specificata in base alla documentazione Microsoft.

Questo è illustrato come segue:

Pianifica l'attività di backup del database nell'Utilità di pianificazione di Windows

Aprire l'Utilità di pianificazione di Windows digitando l'Utilità di pianificazione nella ricerca di Windows e quindi fare clic su Utilità di pianificazione :

Dopo aver aperto l'Utilità di pianificazione di Windows, fai clic su Crea attività di base... dalle opzioni a destra e digita Backup attività database di Ateneo nel Nome casella di immissione e fare clic su Avanti :

Quindi, imposta la frequenza dell'attività lasciando le impostazioni predefinite, che sono giornaliere:

Imposta l'ora giornaliera in cui verrà attivata questa attività (si consiglia di impostare l'ora da due a tre minuti più l'ora corrente per verificare immediatamente che funzioni):

Dobbiamo anche selezionare Avvia un programma alla domanda su cosa vogliamo che questo compito esegua:

Quindi, punta al file batch che chiama SQLCMD per creare un backup del database di Ateneo e fai clic su Avanti :

Fai clic su Fine per completare il processo.

È possibile che tu abbia dedicato più tempo a ciò che è stato impostato nella pianificazione del lavoro per completare l'impostazione del lavoro, il che significa che devi attendere il giorno successivo per vedere se l'attività è in esecuzione o meno.

C'è una soluzione alternativa:devi riprogrammare l'attività con 2-3 minuti di anticipo rispetto all'ora corrente per vederla in esecuzione in 2-3 minuti invece di aspettare l'intera giornata:

Ora attendi che l'attività venga eseguita automaticamente e dopo il tempo specificato, controlla la cartella di backup che abbiamo creato nella Demo cartella sull'unità C:

Congratulazioni, l'attività di manutenzione del database è stata automatizzata con successo utilizzando l'Utilità di pianificazione di Windows, che chiama un file batch che esegue lo script SQLCMD per creare un file di backup.

Elimina l'attività automatizzata creata a scopo dimostrativo una volta completata la procedura dettagliata e non sei interessato a eseguirla ulteriormente.

Cose da fare

Ora che sei pronto per automatizzare le attività di manutenzione del database, come il backup di un database utilizzando l'utilità SQLCMD e l'Utilità di pianificazione di Windows dopo aver esaminato questo articolo, puoi migliorare ulteriormente le tue abilità provando le seguenti cose:

  1. Prova a configurare e automatizzare il backup di un database di esempio SQLBookShop menzionato nell'articolo Semplificare la procedura memorizzata principale del test di unità che chiama anche una procedura di utilità.
  2. Prova a creare più database e ad automatizzarne i backup utilizzando l'utilità SQLCMD con l'Utilità di pianificazione di Windows.
  3. Cerca di automatizzare i processi di backup e ripristino del database creando due file batch, uno per il backup e l'altro per il ripristino del database facendo riferimento agli script SQLCMD e pianificando l'esecuzione giornaliera del lavoro nell'Utilità di pianificazione di Windows.

Strumento utile:

dbForge Studio per SQL Server:potente IDE per la gestione, l'amministrazione, lo sviluppo, il reporting e l'analisi dei dati di SQL Server.