La mise en place d’un plan de maintenance efficace est essentielle pour assurer le bon fonctionnement des bases de données SQL Server. Ce plan vise à garantir la performance, la disponibilité et l’intégrité des données, éléments cruciaux pour toute organisation.
Exercice 1 : Configuration d’un plan de sauvegarde complet hebdomadaire.
Exercice 2 : Vérification de l’intégrité des données.
Exercice 3 : Optimisation des performances.
Voici des exemples de code pour résoudre chaque exercice :
-- Définition du plan de sauvegarde complet hebdomadaire
USE [NomDeVotreBaseDeDonnées];
BACKUP DATABASE [NomDeVotreBaseDeDonnées] TO DISK = 'C:\Sauvegardes\BaseDeDonnees.bak' WITH INIT, FORMAT, COMPRESSION, STATS = 10;
-- Planification de la tâche de sauvegarde
USE msdb;
DECLARE @JobName NVARCHAR(128);
SET @JobName = 'SauvegardeBaseDeDonnées';
EXEC msdb.dbo.sp_add_job
@job_name = @JobName,
@enabled = 1,
@description = 'Plan de sauvegarde hebdomadaire de la base de données',
@owner_login_name = 'NomDeVotreLogin';
EXEC msdb.dbo.sp_add_jobstep
@job_name = @JobName,
@step_name = 'SauvegardeHebdomadaire',
@subsystem = 'TSQL',
@command = 'USE [NomDeVotreBaseDeDonnées]; BACKUP DATABASE [NomDeVotreBaseDeDonnées] TO DISK = ''C:\Sauvegardes\BaseDeDonnees.bak'' WITH INIT, FORMAT, COMPRESSION, STATS = 10;',
@retry_attempts = 5,
@retry_interval = 5;
EXEC msdb.dbo.sp_add_schedule
@schedule_name = 'SauvegardeHebdomadaire',
@freq_type = 8,
@freq_interval = 1,
@active_start_time = 233000;
EXEC msdb.dbo.sp_attach_schedule
@job_name = @JobName,
@schedule_name = 'SauvegardeHebdomadaire';
EXEC msdb.dbo.sp_update_job
@job_name = @JobName,
@enabled = 1;
-- Vérification de l'intégrité des données
DBCC CHECKDB;
-- Analyse des index existants
USE [NomDeVotreBaseDeDonnées];
SELECT
OBJECT_NAME(object_id) AS TableName,
name AS IndexName,
index_type_desc AS IndexType,
avg_fragmentation_in_percent AS FragmentationPercent
FROM
sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL)
WHERE
avg_fragmentation_in_percent > 30; -- Ajustez ce seuil selon vos besoins
-- Réorganisation des index fragmentés
ALTER INDEX [IndexName] ON [TableName] REORGANIZE;
-- Reconstruction des index fortement fragmentés
ALTER INDEX [IndexName] ON [TableName] REBUILD;
Assurez-vous de remplacer NomDeVotreBaseDeDonnées
, NomDeVotreLogin
, IndexName
et TableName
par les noms appropriés dans votre environnement.
Voici une étude de cas fictive basée sur un problème de performance rencontré dans une base de données SQL Server :
Une entreprise de commerce électronique rencontre des problèmes de performance avec son application web. Les utilisateurs se plaignent de temps de chargement longs et d’erreurs intermittentes lorsqu’ils naviguent sur le site et effectuent des achats. L’application est basée sur une base de données SQL Server qui stocke les informations sur les produits, les clients, les commandes, etc.
L’entreprise doit identifier les causes des problèmes de performance et proposer des solutions pour optimiser les performances de l’application.
Étapes de l’analyse et des solutions proposées :
Voici le code SQL correspondant à chaque étape du plan de maintenance résultant :
-- Sauvegarde complète hebdomadaire
USE [NomDeVotreBaseDeDonnées];
BACKUP DATABASE [NomDeVotreBaseDeDonnées] TO DISK = 'C:\Sauvegardes\BaseDeDonnees.bak' WITH INIT, FORMAT, COMPRESSION, STATS = 10;
-- Sauvegarde différentielle
BACKUP DATABASE [NomDeVotreBaseDeDonnées] TO DISK = 'C:\Sauvegardes\BaseDeDonneesDiff.bak' WITH DIFFERENTIAL, FORMAT, COMPRESSION, STATS = 10;
-- Configuration de la rétention des sauvegardes (exemple : conserver les sauvegardes pendant 30 jours)
USE msdb;
EXEC sp_configure 'backup-retention', 30;
-- Vérification de l'intégrité des données
DBCC CHECKDB;
-- Gestion proactive des erreurs et des corruptions
-- Exemple : correction automatique des erreurs mineures
DBCC CHECKDB ([NomDeVotreBaseDeDonnées]) WITH NO_INFOMSGS, ALL_ERRORMSGS, REPAIR_REBUILD;
-- Analyse des indexes existants
USE [NomDeVotreBaseDeDonnées];
-- Identification des indexes fragmentés
SELECT
OBJECT_NAME(object_id) AS TableName,
name AS IndexName,
avg_fragmentation_in_percent AS FragmentationPercent
FROM
sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL)
WHERE
avg_fragmentation_in_percent > 30; -- Ajustez ce seuil selon vos besoins
-- Réorganisation des indexes fragmentés
ALTER INDEX [IndexName] ON [TableName] REORGANIZE;
-- Reconstruction des indexes fortement fragmentés
ALTER INDEX [IndexName] ON [TableName] REBUILD;
-- Actualisation des statistiques
UPDATE STATISTICS [TableName];
Assurez-vous de remplacer NomDeVotreBaseDeDonnées
, IndexName
et TableName
par les noms appropriés dans votre environnement.
La composition des ventes fait référence à la répartition des ventes entre différents produits, catégories…
L’écart en pourcentage permet de comparer une valeur réelle par rapport à une valeur attendue,…
Les écarts sur charges fixes permettent d'analyser les différences entre les charges fixes budgétées et…
L’écart-type est une mesure de la dispersion des données autour de la moyenne. Excel propose…
Exercice 1 : Calcul des Écarts sur Volume et Prix Contexte :Une entreprise a prévu…
1. Généralités sur le Contrôle Budgétaire Question 1 : Quel est l’objectif principal du contrôle…
This website uses cookies.