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

Automatizza il ripristino del test del database in SQL Server

Questo articolo parla dell'automazione del processo di ripristino del database che viene spesso eseguito manualmente dal DBA o dal team dell'infrastruttura responsabile della gestione dei server di database e dei database.

Questo articolo sottolinea inoltre l'importanza di automatizzare le attività di amministrazione del database, come il backup e il ripristino del database, per garantire che la coerenza e l'affidabilità dei database di produzione siano intatte.

Inoltre, ci saranno alcuni suggerimenti su come pianificare e implementare l'automazione delle attività di ripristino del database in uno scenario reale.

Ripristino test database e CheckDB (prospettiva DBA)

L'importanza del backup e del ripristino del database di SQL Server dal punto di vista dell'amministratore del database o del team dell'infrastruttura (responsabile della gestione del server del database) è molto più che eseguire il backup e il ripristino poiché questo è uno dei modi per garantire che il la strategia di ripristino di emergenza (DR) è ben attuata.

Ciò significa anche che le operazioni di backup e ripristino del database sono più efficaci se sono supportate da qualsiasi altro meccanismo di verifica della coerenza.

Utilizzo del comando DBCC CHECKDB

SQL Server offre un pratico comando per verificare la coerenza di un database.

Secondo la documentazione Microsoft, il comando DBCC CHECKDB viene utilizzato per verificare l'integrità logica e fisica di tutti gli oggetti nel database eseguendo una serie di operazioni diverse.

L'esecuzione riuscita del comando senza errori indica che il database è in uno stato stabile e coerente.

Questo comando può essere eseguito semplicemente come segue, a condizione che il database desiderato sia collegato:

Scenario di ripristino del test del database

Consideriamo uno scenario reale in cui un DBA crea costantemente backup del database di produzione.

Tuttavia, la creazione di backup non garantisce che il ripristino di emergenza del database, noto anche come DR, sia attivo a meno che il database non venga ripristinato correttamente.

Quindi il database deve essere ripristinato dal backup per garantire che in caso di qualsiasi incidente del database i dati possano essere ripristinati correttamente.

Il backup del database di produzione non deve mai essere ripristinato sul server di produzione a scopo di test.

Quindi, come fa un DBA a garantire che il backup sia tutto a posto? Semplicemente ripristinando l'ultimo backup del database su un altro server di prova.

Una volta che il backup del database è stato ripristinato correttamente, è necessario eseguire il comando DBCC CHECKDB per assicurarsi che il database ripristinato sia coerente e stabile.

Questo è un compito importante ma dispendioso in termini di tempo che richiede anche molta cura. Idealmente, dovrebbe essere automatizzato, a meno che le regole e i regolamenti dell'organizzazione non limitino l'automazione di questa particolare attività.

Automatizzazione del ripristino dei test del database

Vediamo ora in dettaglio come automatizzare il ripristino dei test del database.

Pianificazione del ripristino del test del database

È molto importante pianificare i tuoi passaggi in modo da poterli automatizzare facilmente. La pianificazione richiede anche di soddisfare i presupposti dell'automazione delle attività SQL.

Precondizioni

Assicurati che le seguenti precondizioni siano soddisfatte prima di automatizzare le attività di ripristino del database in SQL Server utilizzando il modo tradizionale:

  1. La tua automazione non è in conflitto con le regole e i regolamenti organizzativi
  2. Sei autorizzato ad automatizzare questa attività
  3. SQL Agent è in esecuzione
  4. Il server del database su cui avverrà il ripristino dovrebbe essere attivo e funzionante
  5. Il processo di backup del database è già automatizzato e il backup viene inviato a un'unità di backup
  6. L'unità di backup è accessibile dal server di prova

Riepilogo passaggi

  1. Il backup del database viene eseguito su un server
  2. Questo backup viene salvato su un'unità di backup accessibile da un altro server di prova
  3. Un processo SQL è stato pianificato sul server di prova per eseguire il ripristino del backup
  4. Il processo SQL una volta eseguito può essere seguito dall'esecuzione manuale di DBCC CheckDB sul database ripristinato, ma può anche essere automatizzato

Articolo di riferimento

Fare riferimento all'articolo Nozioni di base sull'automazione delle attività di SQL ServerSQL Server per automatizzare l'attività di backup del database poiché questo articolo presuppone che l'attività di backup del database sia già stata automatizzata e salva il backup su un'unità di backup accessibile da un server di prova.

Replica dell'attività di backup del database

Supponiamo che l'attività di backup sia stata eseguita e che sia stato creato un backup su un'unità di backup.

Per replicare questa attività, creeremo un database di esempio chiamato UniversityV7 come segue:

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

USE UniversityV7

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

INSERT INTO [dbo].[Student]
           ([Name]
           ,[Course]
           ,[Marks]
           ,[ExamDate])
     VALUES
           ('Asif'
           ,'Power BI Fundamentals'
           ,85
           ,'01 Jan 2019'),
		   ('Mike'
           ,'Power BI Fundamentals'
           ,80
           ,'01 Jan 2019'),
		   ('Sadaf'
           ,'Power BI Fundamentals'
           ,75
           ,'01 Jan 2019')
		   
GO

L'esecuzione di questo script crea e popola il database di esempio.

Controlla il database eseguendo il seguente script:

SELECT [StudentId]
      ,[Name]
      ,[Course]
      ,[Marks]
      ,[ExamDate]
  FROM [UniversityV7].[dbo].[Student]

L'output dovrebbe essere il seguente:

Supponiamo che l'attività di backup sia automatizzata. Tuttavia, per saltare questo passaggio, dobbiamo comunque creare manualmente il backup del database e salvarlo su un'unità di backup accessibile dal server di prova.

Replica l'attività di backup del database eseguendo il seguente script T-SQL:

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

Verifica del backup del database

Controlla il backup del database navigando nella cartella in cui abbiamo appena creato il backup e visualizza il file di backup:

Connetti a un'altra istanza SQL

Ora connettiamoci a un'altra istanza SQL per emulare un server di test. La prima cosa da verificare è se SQL Agent è in esecuzione o meno.

Avvia SQL Agent (se non in esecuzione)

Fare clic con il pulsante destro del mouse su SQL Server Agent e fai clic su Inizia come mostrato di seguito:

Crea un nuovo lavoro

Quindi, fai clic con il pulsante destro del mouse su Offerte di lavoro , fai clic su Nuovo lavoro... e quindi digitare il nome del lavoro come "Ripristino test database ”:

Quindi, seleziona Passaggi nel menu di navigazione a sinistra, fai clic su Nuovo , e quindi digita "Ripristino test database ” come nome del passaggio:

Digita il seguente script T-SQL nella casella di input Comando dopo esserti assicurato che il tipo T-SQL sia selezionato nell'elenco a discesa corrispondente.

-- Restore the UniversityV7 sample database 
RESTORE DATABASE UniversityV7 FROM DISK=N'C:\Backup\UniversityV7-2019-08-27.bak'
WITH
MOVE 'UniversityV7' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLTAB\MSSQL\DATA\UniversityV7_Data.mdf',
MOVE 'UniversityV7_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLTAB\MSSQL\DATA\UniversityV7_Log.ldf'
,RECOVERY,REPLACE,STATS=10;
GO

Tieni presente che il percorso C:\Programmi\Microsoft SQL Server\MSSQL12.SQLNAME\MSSQL\DATA\UniversityV7_Data.mdf fornito in questo script è solo a scopo dimostrativo. S devi sostituirlo con il effettivo percorso dell'istanza del server SQL di prova.

Infine, fai clic su OK.

Programma l'esecuzione del lavoro in 2 minuti

Fare clic con il pulsante destro del mouse su Ripristino test database lavoro in Offerte di lavoro e fai clic su Proprietà:

Fai clic su Nuovo , digita "Ogni 2 minuti (test) ”, e imposta la pianificazione in modo che venga eseguita dopo due minuti:

Dopo qualche minuto, connettiti al server di prova ed espandi i Database nodo per vedere che l'UniversityV7 il database è stato ripristinato correttamente da un'attività (Job) automatica di SQL Server.

Sentiti libero di eseguire DBCC CheckDB per assicurarti che il processo di ripristino del database vada tutto bene.

Congratulazioni! Hai automatizzato con successo il processo di ripristino del test del database.

Cose da fare

Ora che puoi automatizzare il backup del database e testare il ripristino, prova a completare le seguenti attività per migliorare le tue competenze:

  1. Aggiungi DBCC CheckDB come parte del processo di ripristino automatizzato del database
  2. Automatizzare il backup su un server e ripristinarlo su un altro server di prova
  3. Automatizzare il backup del database e testare le attività di ripristino per più database