Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Automatiser la restauration de test de base de données dans SQL Server

Cet article parle de l'automatisation du processus de restauration de la base de données qui est souvent effectué manuellement par le DBA ou l'équipe d'infrastructure responsable de la gestion du ou des serveurs de base de données et de la ou des bases de données.

Cet article souligne également l'importance d'automatiser les tâches d'administration de la base de données telles que la sauvegarde et la restauration de la base de données pour garantir que la cohérence et la fiabilité des bases de données de production sont intactes.

De plus, il y aura quelques conseils sur la façon de planifier et de mettre en œuvre l'automatisation des tâches de restauration de base de données dans un scénario réel.

Restauration de test de base de données et vérification de la base de données (perspective DBA)

L'importance de la sauvegarde et de la restauration de la base de données SQL Server du point de vue de l'administrateur de la base de données ou de l'équipe d'infrastructure (responsable de la gestion du serveur de base de données) va bien au-delà de la simple exécution de la sauvegarde et de la restauration, car c'est l'un des moyens de s'assurer que le la stratégie de reprise après sinistre (DR) est bien en place.

Cela signifie également que les opérations de sauvegarde et de restauration de la base de données sont plus efficaces si elles sont prises en charge par tout autre mécanisme de vérification de la cohérence.

Utilisation de la commande DBCC CHECKDB

SQL Server propose une commande pratique pour vérifier la cohérence d'une base de données.

Selon la documentation Microsoft, la commande DBCC CHECKDB est utilisée pour vérifier l'intégrité logique et physique de tous les objets de la base de données en effectuant un certain nombre d'opérations différentes.

L'exécution réussie de la commande sans aucune erreur indique que la base de données est dans un état stable et cohérent.

Cette commande peut simplement être exécutée comme suit à condition que la base de données souhaitée soit connectée :

Scénario de restauration de test de base de données

Considérons un scénario réel dans lequel un administrateur de base de données crée constamment des sauvegardes de la base de données de production.

Cependant, la création de sauvegardes ne garantit pas que la récupération après sinistre de la base de données, également connue sous le nom de DR, est en place, sauf si la base de données est restaurée avec succès.

La base de données doit donc être restaurée à partir de la sauvegarde afin de garantir qu'en cas d'incident de base de données, les données puissent être restaurées avec succès.

La sauvegarde de la base de données de production ne doit jamais être restaurée sur le serveur de production à des fins de test.

Alors, comment un administrateur de base de données s'assure-t-il que la sauvegarde fonctionne correctement ? Simplement en restaurant la dernière sauvegarde de la base de données sur un autre serveur de test.

Une fois la sauvegarde de la base de données restaurée avec succès, la commande DBCC CHECKDB doit être exécutée pour s'assurer que la base de données restaurée est cohérente et stable.

C'est une tâche importante mais chronophage qui demande également beaucoup de soin. Idéalement, elle devrait être automatisée, à moins que vos règles et réglementations organisationnelles ne restreignent l'automatisation de cette tâche particulière.

Automatiser la restauration des tests de base de données

Voyons maintenant comment automatiser en détail la restauration des tests de base de données.

Planification de la restauration test de la base de données

Il est très important de planifier vos étapes afin de pouvoir les automatiser facilement. La planification nécessite également que vous remplissiez les conditions préalables de l'automatisation des tâches SQL.

Conditions préalables

Assurez-vous que les conditions préalables suivantes sont remplies avant d'automatiser les tâches de restauration de base de données dans SQL Server de manière traditionnelle :

  1. Votre automatisation n'entre pas en conflit avec les règles et réglementations organisationnelles
  2. Vous êtes autorisé à automatiser cette tâche
  3. L'agent SQL est en cours d'exécution
  4. Le serveur de base de données sur lequel la restauration va avoir lieu doit être opérationnel
  5. Le processus de sauvegarde de la base de données est déjà automatisé et la sauvegarde est envoyée sur un lecteur de sauvegarde
  6. Le lecteur de sauvegarde est accessible par le serveur de test

Résumé des étapes

  1. La sauvegarde de la base de données s'exécute sur un serveur
  2. Cette sauvegarde est enregistrée sur un lecteur de sauvegarde accessible par un autre serveur de test
  3. Une tâche SQL a été planifiée sur le serveur de test pour exécuter la restauration de la sauvegarde
  4. Le travail SQL une fois exécuté peut être suivi d'une exécution manuelle de DBCC CheckDB sur la base de données restaurée, mais peut également être automatisé

Article de référence

Veuillez vous référer à l'article Principes de base de l'automatisation des tâches SQL Server pour automatiser la tâche de sauvegarde de la base de données car cet article suppose que la tâche de sauvegarde de la base de données a déjà été automatisée et il enregistre la sauvegarde sur un lecteur de sauvegarde accessible par un serveur de test.

Répliquer la tâche de sauvegarde de la base de données

Supposons que la tâche de sauvegarde a été exécutée et qu'une sauvegarde a été créée sur un lecteur de sauvegarde.

Pour répliquer cette tâche, nous allons créer une base de données exemple appelée UniversityV7 comme suit :

-- (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'exécution de ce script crée et remplit l'exemple de base de données.

Vérifiez la base de données en exécutant le script suivant :

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

Le résultat devrait être le suivant :

Supposons que la tâche de sauvegarde est automatisée. Cependant, pour ignorer cette étape, nous devons encore créer manuellement la sauvegarde de la base de données et l'enregistrer sur un lecteur de sauvegarde accessible par le serveur de test.

Répliquez la tâche de sauvegarde de la base de données en exécutant le script T-SQL suivant :

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

Vérification de la sauvegarde de la base de données

Vérifiez la sauvegarde de la base de données en accédant au dossier dans lequel nous venons de créer la sauvegarde et affichez le fichier de sauvegarde :

Se connecter à une autre instance SQL

Maintenant, connectons-nous à une autre instance SQL pour émuler un serveur de test. La première chose à vérifier est de savoir si l'agent SQL est en cours d'exécution ou non.

Démarrer l'agent SQL (s'il n'est pas en cours d'exécution)

Cliquez avec le bouton droit sur Agent SQL Server et cliquez sur Démarrer comme indiqué ci-dessous :

Créer une nouvelle tâche

Ensuite, faites un clic droit sur Emplois , cliquez sur Nouvelle tâche… puis tapez le nom de la tâche comme "Database Test Restore ” :

Ensuite, sélectionnez Étapes dans le menu de navigation de gauche, cliquez sur Nouveau , puis tapez "Database Test Restore ” comme nom d'étape :

Tapez le script T-SQL suivant dans la zone de saisie de commande après vous être assuré que le type T-SQL est sélectionné dans la liste déroulante correspondante.

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

Veuillez noter que le chemin C:\Program Files\Microsoft SQL Server\MSSQL12.SQLNAME\MSSQL\DATA\UniversityV7_Data.mdf fourni dans ce script est uniquement à des fins de démonstration. O vous devez le remplacer par le réel chemin de votre instance de serveur SQL de test.

Enfin, cliquez sur OK.

Planifiez l'exécution de la tâche en 2 minutes

Cliquez avec le bouton droit sur Restauration du test de base de données emploi sous Emplois et cliquez sur Propriétés :

Cliquez sur Nouveau , tapez "Toutes les 2 minutes (test) ”, et configurez le programme pour qu'il s'exécute après deux minutes :

Après quelques minutes, connectez-vous au serveur de test et développez les Bases de données noeud pour voir que le UniversityV7 la base de données a été restaurée avec succès par une tâche (job) SQL Server automatisée.

N'hésitez pas à exécuter DBCC CheckDB pour vous assurer que le processus de restauration de la base de données se déroule correctement.

Toutes nos félicitations! Vous avez automatisé avec succès le processus de restauration du test de base de données.

Choses à faire

Maintenant que vous pouvez automatiser la sauvegarde de la base de données et tester la restauration, essayez d'effectuer les tâches suivantes pour améliorer vos compétences :

  1. Ajouter DBCC CheckDB dans le cadre du processus de restauration de base de données automatisé
  2. Automatiser la sauvegarde sur un serveur et la restaurer sur un autre serveur de test
  3. Automatiser les tâches de sauvegarde de la base de données et de test de restauration pour plusieurs bases de données