sql >> Databasteknik >  >> RDS >> Sqlserver

Automatisera Databas Test Restore i SQL Server

Den här artikeln talar om att automatisera databasåterställningsprocessen som ofta görs manuellt av DBA eller infrastrukturteamet som ansvarar för hanteringen av databasservrar och databas(er).

Den här artikeln understryker också vikten av att automatisera databasadministrationsuppgifter som säkerhetskopiering och återställning av databaser för att säkerställa att produktionsdatabasernas konsistens och tillförlitlighet är intakta.

Dessutom kommer det att finnas några tips om hur man planerar och implementerar automatisering av databasåterställningsuppgifter i ett verkligt scenario.

Databasteståterställning och CheckDB (DBA Perspective)

Vikten av säkerhetskopiering och återställning av SQL Server-databas från databasadministratörens eller infrastrukturteamets (ansvariga för databasserverhantering) synvinkel är mycket mer än att bara köra säkerhetskopiering och återställning eftersom detta är ett av sätten att säkerställa att katastrofåterställningsstrategi (DR) är väl på plats.

Detta innebär också att säkerhetskopiering och återställning av databas är effektivare om de stöds av någon annan konsistenskontrollmekanism.

Använda kommandot DBCC CHECKDB

SQL Server kommer med ett praktiskt kommando för att kontrollera en databas konsistens.

Enligt Microsofts dokumentation används kommandot DBCC CHECKDB för att kontrollera den logiska och fysiska integriteten för alla objekt i databasen genom att utföra ett antal olika operationer.

En framgångsrik exekvering av kommandot utan några fel indikerar att databasen är i ett stabilt och konsekvent tillstånd.

Detta kommando kan enkelt utföras enligt följande förutsatt att den önskade databasen är ansluten:

Scenario för återställning av databastest

Låt oss överväga ett verkligt scenario där en DBA konsekvent skapar säkerhetskopior av produktionsdatabasen.

Att skapa säkerhetskopior garanterar dock inte att databaskatastrofåterställningen, även känd som DR, är på plats om inte databasen återställs.

Så databasen måste återställas från säkerhetskopian för att säkerställa att data kan återställas framgångsrikt i händelse av databasincident.

Säkerhetskopieringen av produktionsdatabasen bör aldrig återställas på produktionsservern för teständamål.

Så hur säkerställer en DBA att säkerhetskopieringen är bra? Helt enkelt genom att återställa den senaste säkerhetskopian av databasen på en annan testserver.

När säkerhetskopieringen av databasen har återställts framgångsrikt, bör kommandot DBCC CHECKDB köras för att säkerställa att den återställda databasen är konsekvent och stabil.

Detta är en viktig men tidskrävande uppgift som också kräver mycket omsorg. Helst bör det vara automatiserat – såvida inte dina organisatoriska regler och föreskrifter begränsar automatiseringen av just denna uppgift.

Automatisk återställning av databastest

Låt oss nu se hur man automatiserar databasteståterställning i detalj.

Planerar databasteståterställning

Det är mycket viktigt att planera dina steg så att du kan automatisera dem med lätthet. Planering kräver också att du uppfyller förutsättningarna för SQL-uppgiftsautomatisering.

Förutsättningar

Se till att följande förutsättningar är uppfyllda innan du automatiserar databasåterställningsuppgifter i SQL-server på traditionellt sätt:

  1. Din automatisering strider inte mot organisationens regler och föreskrifter
  2. Du har behörighet att automatisera denna uppgift
  3. SQL Agent körs
  4. Den databasserver på vilken återställningen ska ske bör vara igång
  5. Säkerhetskopieringen av databasen är redan automatiserad och säkerhetskopieringen skickas till en backupenhet
  6. Säkerhetskopieringsenheten är tillgänglig för testservern

Översikt över steg

  1. Databassäkerhetskopiering körs på en server
  2. Denna säkerhetskopia sparas på en backupdisk som är tillgänglig för en annan testserver
  3. Ett SQL-jobb har schemalagts på testservern för att köra återställningen av säkerhetskopian
  4. SQL-jobbet en gång kört kan följas av manuellt körning av DBCC CheckDB på den återställda databasen, men kan också automatiseras

Referensartikel

Se artikeln Basics of SQL Server Tasks Automation för att automatisera uppgiften för säkerhetskopiering av databas eftersom den här artikeln förutsätter att säkerhetskopieringen av databasen redan har automatiserats och den sparar säkerhetskopieringen på en säkerhetskopieringsenhet som är tillgänglig för en testserver.

Replikera databassäkerhetskopieringsuppgiften

Låt oss anta att säkerhetskopieringsuppgiften har körts och en säkerhetskopia har skapats på en säkerhetskopieringsenhet.

För att replikera denna uppgift kommer vi att skapa en exempeldatabas som heter UniversityV7 enligt följande:

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

Genom att köra det här skriptet skapas och fylls i exempeldatabasen.

Kontrollera databasen genom att köra följande skript:

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

Utdata ska vara som följer:

Låt oss anta att säkerhetskopieringsuppgiften är automatiserad. Men för att hoppa över det här steget måste vi fortfarande skapa databassäkerhetskopian manuellt och spara den på en backupenhet som är tillgänglig för testservern.

Replikera databassäkerhetskopieringen genom att köra följande T-SQL-skript:

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

Säkerhetskopiering av databas

Kontrollera databassäkerhetskopieringen genom att navigera till mappen där vi just skapade säkerhetskopian och visa säkerhetskopian:

Anslut till en annan SQL-instans

Låt oss nu ansluta till en annan SQL-instans för att emulera en testserver. Det första du bör kontrollera är om SQL-agenten körs eller inte.

Starta SQL Agent (om den inte körs)

Högerklicka på SQL Server Agent och klicka på Start som visas nedan:

Skapa ett nytt jobb

Högerklicka sedan på Jobb klickar du på Nytt jobb... och skriv sedan jobbnamnet som "Databasteståterställning ”:

Välj sedan Steg i den vänstra navigeringsmenyn klickar du på Ny , och skriv sedan "Databasteståterställning ” som stegnamn:

Skriv följande T-SQL-skript i kommandoinmatningsrutan efter att ha kontrollerat att T-SQL-typ är vald i motsvarande rullgardinslista.

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

Observera att sökvägen C:\Program Files\Microsoft SQL Server\MSSQL12.SQLNAME\MSSQL\DATA\UniversityV7_Data.mdf tillhandahålls i det här skriptet är endast för demoändamål. Y du måste ersätta detta med faktisk sökväg till din test-SQL-serverinstans.

Klicka slutligen på OK.

Schemalägg jobbet att köras om 2 minuter

Högerklicka på Databasteståterställning jobb under Jobb och klicka på Egenskaper:

Klicka på Ny , skriv "Varannan minut (testning) ” och ställ in schemat så att det körs efter två minuter:

Efter några minuter ansluter du till testservern och utökar databaserna nod för att se att UniversityV7 Databasen har återställts framgångsrikt av en automatisk SQL Server Task (Job).

Kör gärna DBCC CheckDB för att säkerställa att databasåterställningsprocessen är okej.

Grattis! Du har framgångsrikt automatiserat databasteståterställningsprocessen.

Saker att göra

Nu när du kan automatisera säkerhetskopiering av databas och teståterställning, försök att slutföra följande uppgifter för att förbättra dina färdigheter:

  1. Lägg till DBCC CheckDB som en del av den automatiska databasåterställningsprocessen
  2. Automatisera säkerhetskopieringen på en server och återställ den på en annan testserver
  3. Automatisera databassäkerhetskopieringen och teståterställningsuppgifterna för flera databaser


  1. Varför avrundar SQL Server resultaten av att dividera två heltal?

  2. indatafilen verkar vara en textformatdump. Använd psql

  3. Kommer UUID som primärnyckel i PostgreSQL att ge dålig indexprestanda?

  4. PostgreSql :Json Array till rader med hjälp av Lateral Join