SQLShack

La vérification de l’intégrité de la base de données SQL est l’une des tâches les plus cruciales et les plus importantes de l’administrateur de base de données. La tâche d’intégrité de la base de données vérifie l’intégrité structurelle et l’allocation de tous les objets et index de la base de données. Les contrôles d’intégrité peuvent être effectués à l’aide de la commande DBCC CheckDB. La commande CheckDB est utilisée pour identifier la corruption dans la base de données. La commande effectue les opérations suivantes sur la base de données.

  1. Exécute la TABLE de contrôle DBCC sur chaque table et view
  2. Exécute le catalogue de vérification DBCC sur les bases de données
  3. Exécute le catalogue de vérification DBCC sur les bases de données
  4. Valide les données du courtier de service
  5. Valide le contenu des vues indexées

Vous pouvez lire DBCC CHECKDB (Transact-SQL) pour en savoir plus sur la commande DBCC CheckDB.

Habituellement, les DBA créent des scripts personnalisés pour identifier la corruption dans les bases de données. Mais, si vous travaillez sur plusieurs bases de données, il devient fastidieux de consulter les journaux générés par la commande DBCC CheckDB. J’ai donc créé une procédure stockée SQL qui s’exécute sur toutes les bases de données, et si elle trouve des erreurs de cohérence, elle envoie les détails à l’équipe DBA.

Dans mon article précédent, Automatiser les sauvegardes de bases de données SQL à l’aide du planificateur de tâches Windows, j’avais expliqué comment nous pouvions automatiser le processus pour générer une sauvegarde complète et différentielle de la base de données SQL restaurée dans SQL server express edition. Cet article explique comment nous pouvons automatiser la vérification de cohérence de la base de données SQL créée dans SQL Server express edition. Pour démontrer, j’ai téléchargé un exemple de base de données à partir d’ici. J’ai installé SQL Server Express edition et restauré la base de données à l’aide de la commande suivante:

1
2
3
4
5
6
7

UTILISER
ALLER
RESTAURER LA BASE DE DONNÉES À PARTIR DU DISQUE = N ‘C:\SQL Sauvegarde \ DemoCorruptMetadata2008R2.bak’
AVEC FILE=1,
DÉPLACER N’Democorruptmetadata ‘ VERS N’C:\Program Fichiers \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS\MSSQL\DATA\DemoCorruptMetadata.mdf’,
DÉPLACER N’Democorruptmetadata_log’ VERS N’C:\Program Fichiers \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS\MSSQL\DATA\DemoCorruptMetadata_log.ldf’,
NOUNLOAD, STATISTIQUES = 5

Une fois qu’une base de données est restaurée, exécutons la commande DBCC CheckDB pour afficher les erreurs.

1
2
3
4
5

définissez nocount sur
GO
utilisez master
GO
dbcc checkdb(DemoCorruptMetadata) avec all_errormsgs, no_infomsgs

 Erreur de cohérence de la base de données SQL

Comme vous pouvez le voir dans l’image ci-dessus, la base de données est corrompue et la commande de vérification de cohérence a signalé des erreurs. Pour effectuer la vérification de cohérence, j’ai créé une procédure stockée qui

  1. Exécute la vérification de cohérence sur toutes les bases de données SQL, et si elle trouve des erreurs de cohérence, elle insère ces erreurs dans une table temporaire
  2. Extrait le message de la table temporaire et envoie l’e-mail au format HTML à l’équipe DBA

Le code de la procédure stockée est indiqué ci-dessous:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

USE master
GO
CREATE PROCEDURE Sp_db_integrity_check
AS
BEGIN
DECLARE @DBName VARCHAR(150)
DECLARE @dbcccommand NVARCHAR(max)
DECLARE @DBcount INT
DECLARE @i INT = 0
CREATE TABLE #errormsgs
(
error INT NULL,
level INT NULL,
state INT NULL,
messagetext VARCHAR (7000) NULL,
repairlevel INT NULL,
status INT NULL,
dbid INT NULL,
dbfragid INT NULL,
objectid INT NULL,
indexid INT NULL,
partitionid INT NULL,
allocunitid INT NULL,
riddbid INT NULL,
ridpruid INT NULL,
INT NULL,
page INT NULL,
slot INT NULL,
refdbid INT NULL,
refpruid INT NULL,
reffile INT NULL,
refpage INT NULL,
refslot INT NULL,
allocation INT NULL,
)
CREATE TABLE #userdatabases
(
NOM VARCHAR(500)
)
INSÉREZ DANS #userdatabases
SÉLECTIONNEZ LE NOM
DEPUIS sys.bases de données
OÙ database_id > 4
IL EST POSSIBLE DE DÉFINIR @DBcount =(SÉLECTIONNER le nombre (1)
À PARTIR DE #bases de données utilisateur)
TANDIS QUE (@DBcount > @i)
COMMENCER
DÉFINIR @DBName =(SÉLECTIONNER LE NOM DU TOP 1
À PARTIR DE #bases de données utilisateur)
DÉFINIR @ dbcccommand = ‘dbcc checkdb(‘+@DBName
+’) avec no_infomsgs, all_errormsgs, tableresults’
INSÉRER DANS #errormsgs
EXEC(‘dbcc checkdb(‘+@DBName+
‘) avec no_infomsgs, all_errormsgs, tableresults’)
SUPPRIMER DE #userdatabases
OÙ NAME= @DBName
SET @i = @i +1
END
DROP TABLE #userdatabases
END
selectselect MessageText from #errormsgs
DECLARE @subject NVARCHAR(max)
DECLARE @tableHTML NVARCHAR(max)
SET@subject=’Rapport de vérification de cohérence de base de données pour le serveur : ‘
+ @@ nom du serveur
SET@tableHTML =
‘ < html > < Body > < style type= »text/css » > table {font-size: 9.0pt; font-family: verdana; text-align: left; } tr {text-align: left; } h3 {display:block; font-size: 15.0pt; font-weight: bold; font-family: verdana; text-align: left; } </ style > < H3 > Vérification estivale de la Cohérence de la base de données sur le serveur ‘
+ @@ nom du serveur +'</H3 >’+N'< bordure de la table= »1″>’
+ N ‘ < tr > < th >Message Texte </th > < th > Base de données corrompue </ th > </tr>’
+ SI VOUS AVEZ UN PROBLÈME AVEC LE chemin xml, VOUS POUVEZ LE FAIRE EN UTILISANT LA FONCTION « TD », « , Isnull(
Db_name(dbid), ») EN TANT QUE « TD », », Isnull(repairlevel, ») EN TANT QUE « TD »
, » À PARTIR DE #errormsgs POUR LE chemin XML(‘tr’), root) EN TANT QUE NVARCHAR(
max))
+N’ < / tableau > < / html > < / Corps>’
EXEC msdb..Sp_send_dbmail
@profile_name= ‘DBMailProfile’,
@recipients= ‘ni*********[email protected]’,
@ si vous avez des questions, veuillez nous contacter pour plus d’informations.’;

Comme vous le savez, l’édition SQL Server Express ne prend pas en charge le courrier de base de données, mais vous pouvez configurer le courrier de base de données à l’aide de requêtes T-SQL. Vous pouvez lire cet article, Configuration de la messagerie de base de données dans l’édition SQL Server Express pour comprendre le processus en détail.

L’édition SQL Server Express ne prend pas en charge les agents SQL Server, nous utilisons donc le planificateur de tâches Windows. J’ai donc créé un fichier de commandes qui exécute une procédure stockée à l’aide de la commande SQLCMD. Le code du fichier batch est le suivant.

1
sqlcmd-S Nisarg-PC\SQLExpress-Q « exécuter sp_DB_Integrity_check » – d DBATools

Spécifiez la commande dans l’éditeur de texte et enregistrez le fichier sous *.fichier bat. Maintenant, créons une tâche à l’aide de Windows task schedular. Ouvrir le Panneau de configuration Ouvrir les outils de l’administrateur Ouvrir le Planificateur de tâches. Dans le planificateur de tâches, Cliquez sur Créer une tâche de base. Sur le premier écran, spécifiez le nom de la tâche et sa description.

 Créer un écran de tâche de base

 Créer un écran de tâche de base

La vérification de cohérence de la base de données doit être effectuée chaque semaine, spécifiez donc chaque semaine dans l’écran Déclencheurs de tâche.

 Écran de déclenchement de tâche

 Écran de déclenchement de tâche

Le script doit être exécuté tous les dimanches à 1h00, spécifiez donc 01:00:00 dans la zone de texte Démarrer. Le travail doit être exécuté une fois par semaine, alors spécifiez 1 dans Recur chaque zone de texte. Sélectionnez Dimanche dans la liste des jours.

 Écran de configuration de l'horaire hebdomadaire

 Écran de configuration de la planification hebdomadaire

Nous exécutons un script batch pour vérifier la corruption de la base de données, choisissez donc l’option Démarrer un programme sur l’écran d’action.

 Écran d'action des tâches

 Écran d'action de tâche

Au démarrage, un écran de programme, spécifiez le chemin d’accès complet du fichier batch. Vous pouvez trouver le fichier en parcourant les répertoires. Dans notre cas, le fichier batch a été créé en C:\DatabaseScripts, j’ai donc fourni le chemin complet du fichier de commandes. Assurez-vous que l’utilisateur qui a créé la planification doit avoir un accès en lecture-écriture sur le répertoire dans lequel le fichier de commandes a été créé. Cliquez sur Suivant.

 Démarrer un écran de programme

 Démarrer un écran de programme

Sur l’écran Résumé, vous pouvez consulter les détails de la tâche créée. Cliquez sur Terminer.

 Écran récapitulatif

 Écran récapitulatif

Vous pouvez afficher la tâche dans les fenêtres de planification des tâches. Maintenant, testons la tâche configurée. Pour ce faire, cliquez avec le bouton droit sur Vérifier l’intégrité de la base de données et cliquez sur Exécuter. Sinon, cliquez sur le lien nommé Exécuter dans le panoramique de droite.

 Afficher l'historique des tâches

Le processus de vérification de la cohérence commence.

 Début du processus DBCC CheckDB

Le processus s’est terminé avec succès. Vous pouvez vérifier les détails dans l’onglet Historique des tâches du planificateur de tâches.

 Historique d'exécution des tâches

Nous avons restauré une base de données SQL corrompue, nous avons donc reçu un e-mail contenant les erreurs de cohérence de la base de données. L’e-mail ressemble à l’image suivante.

 E-mail d'erreur de cohérence

Résumé

Cet article explique comment nous pouvons identifier la corruption de base de données à l’aide d’un script batch programmé dans le planificateur de tâches Windows. Cet article peut être utile aux administrateurs de base de données d’entrée de gamme qui souhaitent automatiser les tâches de maintenance de base de données de base de données SQL créées ou restaurées dans SQL server express edition. Dans mon prochain article, nous allons apprendre comment automatiser la maintenance d’index de la base de données SQL créée dans SQL Server express edition à l’aide du planificateur de tâches Windows. Restez à l’écoute !

  • Auteur
  • Messages récents
 Nisarg Upadhyay
Nisarg Upadhyay est un administrateur de base de données SQL Server et un professionnel certifié Microsoft qui possède plus de 8 ans d’expérience dans l’administration de SQL Server et 2 ans dans l’administration de bases de données Oracle 10g.
Il possède une expertise dans la conception de bases de données, le réglage des performances, la sauvegarde et la récupération, la configuration HA et DR, les migrations et les mises à niveau de bases de données. Il a obtenu un baccalauréat en technologie de l’Université Ganpat. Il peut être joint sur nisargupadhyay87 @ outlook.com

 Nisarg Upadhyay
Derniers articles de Nisarg Upadhyay (tout voir)
  • Comment déplacer des tables vers un autre groupe de fichiers d’une base de données SQL – 14 décembre 2021
  • Configurer les pilotes ODBC pour Oracle 19c – 9 décembre 2021
  • Configurer un serveur lié entre SQL Server et PostgreSQL à l’aide des pilotes ODBC – Décembre 6, 2021

Write a Comment

Votre adresse e-mail ne sera pas publiée.