Database VIMDB suspecte sous SQL Express

On a rencontré un comportement assez marrant/ennuyeux sur une base SQL Express d’un homelab.

On était en train de faire plein de tests/modification en pleine soirée d’orage sur Paris, et pour une fois, coupure générale d’électricité en plein milieu d’un test (sinon c’est pas marrant ^^).

Conséquence : reboot des serveurs, on serre les fesses pendant le check consistency des 8 To de RAID-5 (vivement la migration sous le girafon !) et on regarde ce qui ne marche plus :p

Premier effet kisscool, plus de vCenter, en regardant de plus près, le service vCenter plante pour un problème de connectivité à la BDD.

On se connecte au serveur SQL et là, on tombe sur ça :

Bon au moins, on comprend mieux le plantage du service vCenter ^^

SQL Server ne laissera faire aucune opération sur une base en mode Suspect tant qu’elle ne sera pas réparée !

Pour avoir plus d’infos sur pourquoi la base s’est mis en mode Suspect, il suffit de lancer cette commande SQL :

DBCC CHECKDB (‘YourDBname’) WITH NO_INFOMSGS, ALL_ERRORMSGS


Bon pour le coup, nous on connaissait la cause :p mais ça peut servir si la raison n’est pas évidente.

Afin de réparer la base de données, il faut effectuer plusieurs actions via des commandes SQL.

Tout d’abord, il faut préparer la base pour une récupération, via les commandes :

EXEC sp_resetstatus 'VIM_VCDB'
ALTER DATABASE VIM_VCDB SET EMERGENCY
ALTER DATABASE VIM_VCDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE

La procédure stockée sp_resetstatus désactive l’indicateur suspect sur une base de données. Elle met à jour les colonnes de mode et d’état qualifiant la base de données nommée dans sys.databases

Le mode EMERGENCY marque la base de données en READ_ONLY (en lecture seule), désactive la journalisation et limite l’accès aux membres du rôle serveur fixe sysadmin.

Le mode SINGLE_USER indique que l’accès à la base de données n’est autorisé qu’à un seul utilisateur à la fois (nécessaire pour la réparation d’erreur via DBCC CheckDB)

DBCC CheckDB ('VIM_VCDB', REPAIR_ALLOW_DATA_LOSS)

Tente de réparer toutes les erreurs signalées. Ces réparations peuvent entraîner des pertes de données.

ALTER DATABASE VIM_VCDB SET MULTI_USER

On remet la base dans l’état de production. Elle n’a plus le flag Suspect et peux être ouverte normalement.

Plus d’infos sur les commandes ALTER DATABASE :

http://msdn.microsoft.com/fr-fr/library/bb522682.aspx

Plus d’infos sur les commandes DBCC CHECKDB :

http://msdn.microsoft.com/fr-fr/library/ms176064(v=sql.100).aspx

Au final, pour éviter de se retrouver dans cette situation, ne pas lésiner sur le secours électrique, onduleur ou mieux :

5 comments

  1. Bravo et merci pour ces commandes, je viens de m’en service pour dépanner un client, il est heureux de ne pas avoir perdu sa base !

Laisser un commentaire

Required fields are marked *.