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

Automatiser databasetestgendannelse i SQL Server

Denne artikel taler om automatisering af databasegendannelsesprocessen, som ofte udføres manuelt af DBA eller infrastrukturteamet, der er ansvarligt for styringen af ​​databaseserver(e) og database(r).

Denne artikel fremhæver også vigtigheden af ​​at automatisere databaseadministrationsopgaver såsom databasesikkerhedskopiering og -gendannelse for at sikre, at konsistens og pålidelighed af produktionsdatabase(r) er intakte.

Derudover vil der være nogle tips om, hvordan man planlægger og implementerer automatisering af databasegendannelsesopgaver i et virkeligt scenarie.

Gendannelse af databasetest og CheckDB (DBA-perspektiv)

Betydningen af ​​SQL Server-databasesikkerhedskopiering og -gendannelse set fra databaseadministratorens eller infrastrukturteamets (ansvarlige for databaseserveradministration) synspunkt er meget mere end blot at køre backup og gendannelse, da dette er en af ​​måderne til at sikre, at Disaster recovery strategi (DR) er godt på plads.

Dette betyder også, at sikkerhedskopiering og gendannelse af databaser er mere effektive, hvis de understøttes af en anden konsistenskontrolmekanisme.

Brug af DBCC CHECKDB-kommandoen

SQL Server kommer med en praktisk kommando til at kontrollere en databases konsistens.

Ifølge Microsoft-dokumentationen bruges DBCC CHECKDB-kommandoen til at kontrollere den logiske og fysiske integritet af alle objekter i databasen ved at udføre en række forskellige operationer.

Den vellykkede udførelse af kommandoen uden fejl indikerer, at databasen er i en stabil og konsistent tilstand.

Denne kommando kan ganske enkelt udføres som følger, forudsat at den ønskede database er tilsluttet:

Scenario for gendannelse af databasetest

Lad os overveje et scenarie i den virkelige verden, hvor en DBA konsekvent opretter sikkerhedskopier af produktionsdatabasen.

Oprettelse af sikkerhedskopier garanterer dog ikke, at databasegendannelsen, også kendt som DR, er på plads, medmindre databasen gendannes med succes.

Så databasen skal gendannes fra sikkerhedskopien for at sikre, at dataene kan gendannes med succes i tilfælde af en databasehændelse.

Sikkerhedskopieringen af ​​produktionsdatabasen bør aldrig gendannes på produktionsserveren til testformål.

Så hvordan sikrer en DBA, at sikkerhedskopieringen er i orden? Simpelthen ved at gendanne den seneste backup af databasen på en anden testserver.

Når databasesikkerhedskopieringen er blevet gendannet korrekt, skal DBCC CHECKDB-kommandoen udføres for at sikre, at den gendannede database er konsistent og stabil.

Dette er en vigtig, men tidskrævende opgave, som også kræver meget omhu. Ideelt set bør det være automatiseret – medmindre dine organisatoriske regler og forskrifter begrænser automatisering af denne særlige opgave.

Automatisering af databasetestgendannelse

Lad os nu se, hvordan du automatiserer databasetestgendannelse i detaljer.

Planlægning af databasetestgendannelse

Det er meget vigtigt at planlægge dine trin, så du nemt kan automatisere dem. Planlægning kræver også, at du opfylder forudsætningerne for SQL opgaveautomatisering.

Forudsætninger

Sørg for, at følgende forudsætninger er opfyldt, før du automatiserer databasegendannelsesopgaver i SQL-server på den traditionelle måde:

  1. Din automatisering er ikke i konflikt med organisatoriske regler og forskrifter
  2. Du er autoriseret til at automatisere denne opgave
  3. SQL Agent kører
  4. Den databaseserver, som gendannelsen skal finde sted på, bør være oppe og køre
  5. Sikkerhedskopiering af databasen er allerede automatiseret, og sikkerhedskopieringen sendes til et sikkerhedskopieringsdrev
  6. Sikkerhedskopieringsdrevet er tilgængeligt af testserveren

Opsummering af trin

  1. Sikkerhedskopiering af databasen kører på en server
  2. Denne sikkerhedskopi gemmes på et backupdrev, der er tilgængeligt for en anden testserver
  3. Der er planlagt et SQL-job på testserveren til at køre gendannelsen af ​​sikkerhedskopien
  4. SQL-jobbet, når det er kørt, kan efterfølges af manuelt at køre DBCC CheckDB på den gendannede database, men kan også automatiseres

Referenceartikel

Se venligst artiklen Grundlæggende om SQL Server Tasks Automation for at automatisere database backup-opgaven, da denne artikel antager, at database backup-opgaven allerede er blevet automatiseret, og den gemmer sikkerhedskopieringen på et backup-drev, som er tilgængeligt af en testserver.

Replikering af databasebackup-opgaven

Lad os antage, at backup-opgaven er blevet kørt og en backup er blevet oprettet på et backup-drev.

For at replikere denne opgave skal vi oprette en eksempeldatabase kaldet UniversityV7 som følger:

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

Kørsel af dette script opretter og udfylder eksempeldatabasen.

Tjek databasen ved at køre følgende script:

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

Outputtet skal være som følger:

Lad os antage, at backup-opgaven er automatiseret. Men for at springe dette trin over skal vi stadig manuelt oprette databasesikkerhedskopien og gemme den på et backupdrev, som testserveren har adgang til.

Repliker database backup-opgaven ved at køre følgende T-SQL-script:

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

Sikkerhedskopiering af database

Tjek databasesikkerhedskopieringen ved at navigere til mappen, hvor vi lige har oprettet sikkerhedskopien, og se backupfilen:

Opret forbindelse til en anden SQL-instans

Lad os nu oprette forbindelse til en anden SQL-instans for at efterligne en testserver. Den første ting at kontrollere er, om SQL-agenten kører eller ej.

Start SQL Agent (hvis den ikke kører)

Højreklik på SQL Server Agent og klik på Start som vist nedenfor:

Opret et nyt job

Højreklik derefter på Jobs , klik på Nyt job... og skriv derefter jobnavnet som "Gendannelse af databasetest ”:

Vælg derefter Trin i venstre navigationsmenu skal du klikke på Ny , og skriv derefter "Gendannelse af databasetest " som trinnavnet:

Indtast følgende T-SQL-script i kommandoindtastningsfeltet, efter du har sikret dig, at T-SQL-typen er valgt på den tilsvarende rulleliste.

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

Bemærk venligst, at stien C:\Program Files\Microsoft SQL Server\MSSQL12.SQLNAME\MSSQL\DATA\UniversityV7_Data.mdf er angivet i dette script er kun til demoformål. Y du skal erstatte dette med faktisk sti til din test SQL-serverforekomst.

Klik til sidst på OK.

Planlæg jobbet til at køre om 2 minutter

Højreklik på Gendannelse af databasetest job under Jobs og klik på Egenskaber:

Klik på Ny , skriv "Hvert andet minut (testning) ”, og indstil tidsplanen til at køre efter to minutter:

Efter et par minutter skal du oprette forbindelse til testserveren og udvide Databaserne node for at se, at UniversityV7 databasen er blevet gendannet med succes af en automatiseret SQL Server Task (Job).

Du er velkommen til at køre DBCC CheckDB for at sikre, at databasegendannelsesprocessen er i orden.

Tillykke! Du har med succes automatiseret databasetestgendannelsesprocessen.

Ting at gøre

Nu hvor du kan automatisere databasesikkerhedskopiering og testgendannelse, prøv venligst at udføre følgende opgaver for at forbedre dine færdigheder:

  1. Tilføj DBCC CheckDB som en del af den automatiske databasegendannelsesproces
  2. Automatiser sikkerhedskopieringen på én server og gendan den på en anden testserver
  3. Automatiser databasesikkerhedskopieringen og testgendannelsesopgaverne for flere databaser


  1. Java JDBC ignorerer setFetchSize?

  2. Hvorfor kan jeg ikke oprette triggere på objekter, der ejes af SYS?

  3. Hvorfor kan jeg ikke indtaste denne dato i en tabel ved hjælp af sql?

  4. Forklaring af JSONB introduceret af PostgreSQL