Comment configurer les plans de maintenance dans SQL Server ? Et puis d’abord, de quoi s’agit-il ?!
Les plans de maintenance dans SQL Server permettent de configurer et de planifier l’exécution de tâches spécifiques sur une ou plusieurs base de données SQL. Le plus souvent, on pense notamment aux actions de sauvegardes mais également de nettoyage ou de re-génération des index par exemple.
Bien entendu, ces plans de maintenance peuvent regrouper une ou plusieurs tâches spécifiques et s’exécuter automatiquement suivant des modèles de récurrences bien précis (toutes les heures, chaque jour, une fois par mois, etc.).
Voyons un peu par l’exemple. Dans mon cas, je vais faire le test sur une ancienne base MIM (mais peu importe) et il s’agira d’un SQL Server 2012. Pour pouvoir aller plus loin, vous devez disposer de SQL Management Studio (soit directement sur la VM de test, soit en l’installant sur votre poste).
Une fois connecté, sur la gauche dans Object Explorer, rendez-vous dans Management, puis Maintenance Plans. Effectuez maintenant un clic droit sur Maintenance Plans et cliquez sur New Maintenance Plan pour démarrer la création de votre nouveau plan de maintenance.
Une fois que vous êtes dans votre Maintenance Plan, vous pouvez alors définir les différentes sous-actions que vous souhaitez mettre en place (elles correspondront à des subplan) et surtout à quels moments ces actions devront être effectuées.
Pour ce faire, insérez à partir de la Toolbox (à gauche) les différents éléments à ajouter à vos scénarios de maintenance.
Dans cet exemple, je dispose de 4 subplans qui vont s’exécuter comme suit :
- Every days – Chaque jour
- Weekly – Chaque semaine
- Monthly – Chaque mois
- Toutes les 2 heures
Ci-dessous, je vous propose un exemple type de tâches à réaliser (à adapter en fonction de vos besoins et de vos obligations contractuelles bien entendu).
Actions réalisées chaque jour
Les actions sont les suivantes – elles sont interconnectées les unes aux autres afin de représenter l’ordre et la séquence des tâches :
- Check Database Integrity : sur l’ensemble des bases de données du SQL Server
- Back Up Database Task : effectuer un backup de l’ensemble des bases de données en choisissant le type de backup (Full, Differential ou simplement les Transaction Log) ainsi que l’emplacement où seront stockées les sauvegardes). Dans mon cas, à cette étape-ci, il s’agit de Full Backup.
- Maintenance Cleanup Task : afin de programmer un ménage régulier qui se chargera de supprimer les anciens backups dès qu’ils sont trop anciens afin de ne conserver que 2 ou 3 mois de sauvegardes (ou plus selon vos besoins).
- History Cleanup Task : même chose pour le nettoyage de l’historique du SQL Agent, etc. en indiquant combien d’historique vous souhaitez conserver.
Actions réalisées chaque semaine
Les actions ci-dessous sont réalisées une fois par semaine :
- Reorganize Index Task : afin de mettre à jour les Index de vos bases de données. Important si vos bases de données gèrent de grande quantité d’informations afin que celles-ci restent performantes dans leurs temps de réponses.
- Update Statistics Tasks.
Actions réalisées chaque mois
Les actions ci-dessous sont réalisées 1 fois par mois (n’oubliez pas, il s’agit toujours d’adapter en fonction de vos besoins et du type de bases de données que vous utilisez) :
- Rebuild Index Task : je le disais précédemment, les index sont importants pour garantie de bonnes performances de vos bases de données. Une fois par mois, on décide donc de procéder à la recréation de l’ensemble des Index (il s’agit d’une opération un peu plus longue que la simple mise à jour – donc je planifie cette action la nuit à des moments où les bases ne sont pas trop sollicitées).
- Shrink Database Task : rationaliser et faire le ménage dans l’espace que vos bases de données utilisent afin de libérer un peu d’espace. Toujours utile.
Actions réalisées toutes les 2 heures
- Backup Up Database Task : contrairement à la tâche de backup précédente – cette fois-ci nous effectuons toutes les 2 heures une tâche de backup des Transaction Logs afin de pouvoir récupérer l’état de nos bases de données à des états un peu plus intermédiaires qu’un Full Backup journalier classique.
- Maintenance Cleanup Task.
Bien entendu, il existe d’autres qui peuvent être réalisées sur vos bases de données. Libre à vous d’adapter ces scénarios en fonction de vos besoins et de la criticité ou de la sollicitation de vos bases de données.
Enfin n’oubliez pas que certaines tâches peuvent être consommatrices – dans ce cas, choisissez de les exécuter aux heures creuses lorsque vos bases ne sont pas fortement sollicitées.
NB : Tout l’article a été fait sur un SQL Server 2012 (mais vous devez retrouver les mêmes possibilités sur 2008 ou 2014).
Merci beaucoup pour ces explications ! La backup database task permet-elle de générer un fichier .bak avec un nom différent à chaque fois ? Merci d’avance !
Hello AB, n’étant pas un DBA professionnel, je n’ai malheureusement pas la réponse à cette question. D’une manière ou d’une autre je pense que c’est faisable (via PowerShell ou autre) mais je n’ai pas la procédure pour cela. Désolé :'(