MetaTips

Le blog de l'edition logiciel en ligne

Articles

Resoudre les corruptions de bases avec SQL serveur 2005 / 2008

Posted by Allouche Mathieu on July 7, 2011 at 3:15 AM

Type : Article/ Tutorial - Niveau : 4 / 5
Lors que votre base est corrompue et que vous n'avez plus d'autre solution, il reste un espoir. Utiliser les outils non documentés de SQL Serveur 2005 / 2008. Cet article vous presente comment. ! Attention ! En suivant cet article


Type : Article/ Tutorial
Niveau :
4 / 5
Durée delecture : env. 1 heure
Compatibilité / s'applique à :

  • MicrosoftSQL Seveur 2005 ()
  • MicrosoftSQL Seveur 2008 ()  

 

Symptomes : 

Aprés avoireffectué une verification de base le service c'est bloqué. La base à redémarré,ou vous avez annulé un journal de transaction corrompu. Lors de certainescommandes ou opération vous avez :

Msg 211, Level 23, State 51, Line 1

Corruption du schéma possible. Exécutez DBCC CHECKCATALOG.

Msg 0, Level 20, State 0, Line 0

Une erreur grave s'est produite sur la commande actuelle. Les résultatséventuels doivent être ignorés.

 Résolution standard :

La procédurede résolution standard consiste à utiliser les commandes DBCC. Mais lorsquecelle-ci vous donnes les resultats suivant, il n'y a plus grand espoir :

 DBCC CHECKCATALOG (DatabaseName)

 Msg 3852, Level 16, State 1, Line 1

Row (object_id=52840892) in sys.objects (type=U ) does not have a matchingrow (object_id=52840892,index_id=0) in sys.indexes.

Msg 3852, Level 16, State 1, Line 1

Row (object_id=1321193594) in sys.objects (type=U ) does not have amatching row (object_id=1321193594,index_id=0) in sys.indexes.

Msg 3853, Level 16, State 1, Line 1

Attribute (default_object_id=84841006) of row(object_id=52840892,column_id=4) in sys.columns does not have a matching row(object_id=84841006) in sys.objects.

DBCC execution completed. If DBCC printed error messages, contact yoursystem administrator.

 

DBCC CHECKDB (DatabaseName, REPAIR_ALLOW_DATA_LOSS)
Msg 211, Level 23, State 51, Line 1

Possible schema corruption. Run DBCC CHECKCATALOG.
Msg 0, Level 20, State 0, Line 0

A severe error occurred on the current command.  The results, if any,should be discarded.

Résolutionde dernier recours : 

 * Avec SQL2000, il était possible de modifier les meta données :

EXECsp_configure 'allow updates', 1;
GO
RECONFIGUREWITH OVERRIDE;
GO

* Avec SQL Serveur 2005 & 2008, impossible, car ils'agit de vue système.

1. redémarrerle serveur en single user mode :

            sqlservr.exe-m

2. se connecter avec le DAC, ou utiliser le modeadministrateur :

sqlcmd/A

3.  Identification des erreurs :-

useDatabaseName

GO

select * from sys.syscolpars where not exists (select * from sys.objects whereobject_id = sys.syscolpars.id)

GO

4.  Suppression deslignes suspectes

delete from sys.syscolpars where not exists (select * from sys.objects where object_id= sys.syscolpars.id)

 5.   Lancer un dbcc checkdb pourêtre certain qu'il n'y ait plus d'erreur

 


Categories: SQL Serveur

Post a Comment

Oops!

Oops, you forgot something.

Oops!

The words you entered did not match the given text. Please try again.

Already a member? Sign In

0 Comments