Réparer une base de données
Lorsque la base de données est corrompue, la meilleure solution est d'effectuer une restauration de la base de données depuis une sauvegarde, et non pas de tenter de réparer la base de données.
Toutefois, la commande DBCC CHECKDB présente un certain nombre d'options qui peuvent être utilisées pour réparer la base de données.
ATTENTION, certaines options peuvent générer des PERTES DE DONNÉES et ne doivent être utilisées qu'en dernier recours.
Options de réparation
REPAIR_FAST
L'option REPAIR_FAST effectue les réparations mineures qui prennent peu de temps et n'amènent pas de perte de données.
REPAIR_REBUILD
L'option REPAIR_REBUILD procède à une vérification et à une réparation globale qui nécessite plus de temps mais sans risque de perte de données. L'option REPAIR_REBUILD nécessite que la base de données soit en mode mono-utilisateur.
REPAIR_ALLOW_DATA_LOSS
L'option REPAIR_ALLOW_DATA_LOSS réalise toutes les tâches de REPAIR_REBUILD et ajoute les tâches supplémentaires pouvant conduire à une PERTE DE DONNÉES (Allocation et suppression de lignes pour corriger des problèmes structuraux et des erreurs de pages et suppression d'objets textes corrompus).
Recommandations
Lorsque vous cherchez à résoudre des problèmes de base de données :
Ordre d'exécution recommandé
-
Commencez par REPAIR_FAST ou REPAIR_REBUILD
-
Si cela ne suffit pas, utilisez l'option REPAIR_ALLOW_DATA_LOSS, mais attention, ne perdez pas de vue que l'option REPAIR_ALLOW_DATA_LOSS peut conduire à une PERTE INACCEPTABLE DE DONNÉES IMPORTANTES.
Nous vous recommandons fortement d'effectuer une sauvegarde de la base de données avant d'utiliser l'option REPAIR_ALLOW_DATA_LOSS.
Utilisation dans une transaction
Pour assurer la récupération de la base de données dans son état d'origine, nous vous suggérons de placer la commande DBCC dans une transaction pour examiner les résultats et annuler la transaction si nécessaire.
Pour en savoir plus
https://msdn.microsoft.com/fr-fr/library/ms176064%28v=sql.120%29.aspx
En cas de corruption, privilégiez toujours la restauration depuis une sauvegarde plutôt que la réparation.
REPAIR_REBUILD nécessite que la base soit en mode mono-utilisateur pour éviter les conflits d'accès.
Réparer une base de données - Guide de récupération