Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Que faire pour récupérer une base de données SQL déclarée suspecte ?

0000001081     -      25/10/2017

Attention, les procédures qui suivent ne sont applicables que pour les versions SQL Serveur antérieures à SQL Serveur 2005. MERCATOR ne les a pas testées de façon exhaustive. Leur utilisation est faite sous l'entière responsabilité de la personne qui les exécute. Ce bulletin est uniquement à titre informatif.

Une base de données peut être considérée comme suspecte pour différentes raisons parmi lesquelles :

  • La base de données ou le log file est manquant

  • La base de donnée est corrompue

  • SQL Server ne dispose pas de suffisamment d'espace pour restaurer la base de données au démarrage

Le but de cette page est de vous permettre de solutionner certains cas de figure ou au moins de pouvoir exporter les données vers une autre base de données.
Les solutions proposées vont nécessiter l'installation préalable d'un SQL Enterprise Manager. Les requêtes peuvent être exécutées à partir de l'Analyseur de Requêtes (accessible dans le menu Démarrer)

Solution 1

Cela consiste à exécuter dans une fenêtre d'exécution de requêtes un " sp_resetstatus " dans la db Master pour la db suspecte :

Use master
Go
sp_resetstatus Ma_base_de_données


Ensuite, il faut redémarrer le serveur SQL et la base de données devrait être à nouveau disponible.

Solution 2

Si la première solution ne fonctionne pas, il va falloir modifier manuellement le statut. Pour cela, il faut exécuter les requêtes suivantes les unes après les autres :

sp_configure 'allow updates', 1
Reconfigure with override
Go

Update sysdatabases set status = status ^ 256 where name ='Ma_base_de_données'

sp_configure 'allow updates', 0
Reconfigure with override
Go


Ensuite, il faut redémarrer le serveur SQL et la base de données devrait être à nouveau disponible.

Solution 3

Si cette deuxième solution ne résout pas le problème, il reste la possibilité de mettre la base de données en mode "urgenc " et il sera ainsi possible d'exporter les données vers une autre db. La procédure à suivre est la suivante :

sp_configure 'allow updates', 1
Reconfigure with override
Go

Update sysdatabases
Set status = status | -32768
Where name = ' ma_base_de_données '
Go

sp_configure 'allow updates', 0
Reconfigure with override
Go


Ensuite, il faut redémarrer le serveur SQL et la base de données devrait être en mode d'urgence.
Dans l'Enterprise, il faut se positionner sur les tables de la base de données concernée et ensuite lancer un export au moyen du clic-droit de la souris-toutes les tâches.

Attention, il faut bien spécifier la DB de destination car c'est la master qui vient par défaut