web-dev-qa-db-fra.com

Corruption de la base de données SQL Server 2005. Conseiller

J'ai rencontré des corruptions de base de données dans le passé, mais je savais quel objet a frappé la route. Dans cette situation, j'exécute un DBCC CheckDB contre une base de données problématique SQL Server 2005 et je reçois les erreurs suivantes

    Msg 8909, Level 16, State 1, Line 1
Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page ID (1:2388) contains an incorrect page ID in its page header. The PageId in the page header = (0:0).
Msg 8909, Level 16, State 1, Line 1
Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page ID (1:8807) contains an incorrect page ID in its page header. The PageId in the page header = (0:0).
CHECKDB found 0 allocation errors and 2 consistency errors not associated with any single object.
Msg 8929, Level 16, State 1, Line 1
Object ID 60, index ID 1, partition ID 281474980642816, alloc unit ID 281474980642816 (type In-row data): Errors found in off-row data with ID 1454243840 owned by data record identified by RID = (1:728:2)
Msg 8928, Level 16, State 1, Line 1
Object ID 60, index ID 1, partition ID 281474980642816, alloc unit ID 71776119065149440 (type LOB data): Page (1:2388) could not be processed.  See other errors for details.
Msg 8965, Level 16, State 1, Line 1
Table error: Object ID 60, index ID 1, partition ID 281474980642816, alloc unit ID 71776119065149440 (type LOB data). The off-row data node at page (1:2388), slot 0, text ID 1454243840 is referenced by page (1:728), slot 2, but was not seen in the scan.
CHECKDB found 0 allocation errors and 3 consistency errors in table 'sys.sysobjvalues' (object ID 60).
Msg 8928, Level 16, State 1, Line 1
Object ID 393768460, index ID 1, partition ID 72057594063421440, alloc unit ID 72057594069647360 (type In-row data): Page (1:8807) could not be processed.  See other errors for details.
Msg 8976, Level 16, State 1, Line 1
Table error: Object ID 393768460, index ID 1, partition ID 72057594063421440, alloc unit ID 72057594069647360 (type In-row data). Page (1:8807) was not seen in the scan although its parent (1:2862) and previous (1:8806) refer to it. Check any previous errors.
Msg 8978, Level 16, State 1, Line 1
Table error: Object ID 393768460, index ID 1, partition ID 72057594063421440, alloc unit ID 72057594069647360 (type In-row data). Page (1:10128) is missing a reference from previous page (1:8807). Possible chain linkage problem.
CHECKDB found 0 allocation errors and 3 consistency errors in table 'reservation_packages' (object ID 393768460).
Msg 8928, Level 16, State 1, Line 1
Object ID 1513772450, index ID 0, partition ID 72057594064994304, alloc unit ID 72057594071285760 (type In-row data): Page (1:5211) could not be processed.  See other errors for details.
Msg 8939, Level 16, State 98, Line 1
Table error: Object ID 1513772450, index ID 0, partition ID 72057594064994304, alloc unit ID 72057594071285760 (type In-row data), page (1:5211). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 63047689 and -4.
CHECKDB found 0 allocation errors and 2 consistency errors in table 'reservation_services_log' (object ID 1513772450).
CHECKDB found 0 allocation errors and 10 consistency errors in database 'ChJ'.
repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB (ChJ).

ID d'objet 0 ?? Index ID -1 ?? Partition ID 0 ?? Je ne peux rien faire de rien

La base de données est en mode de récupération simple (malheureusement) et j'ai une sauvegarde de mois de mois.

Je dois avoir la course à pied car il contient des données vitales.

J'apprécierais toute aide que vous pourriez me donner.

Merci à l'avance!

Edit1: Malheureusement, les données de la porte de Red Gate ne peuvent pas enregistrer la base de données lorsqu'elles numérisent les tables ... :(

6
PanosPlat

Comme vous avez une vieille sauvegarde avec le bon schéma, la base de données Problème est en ligne et vous avez interrogé avec succès plusieurs tables, je serais enclin à essayer d'obtenir une vidage des données brutes le plus rapidement possible.

  1. Arrêtez les applications Accès à la base de données.
  2. Le BCP exporte les données, la table par tableau des fichiers. Comme la corruption du disque pourrait être la source de vos problèmes, exportez les données sur un lecteur portable ou à un fichier de fichiers sur une autre machine.
  3. Restaurez votre ancienne sauvegarde à un bon serveur connu.
  4. Selon la complexité du schéma de base de données, tronque les données de votre sauvegarde restaurée ou de votre script sur le schéma et créez une nouvelle base de données vide.
  5. BCP les données dans.

Les données peuvent contenir des inexactitudes, des lignes manquantes peuvent être des valeurs erronées. Mais avec une chance, vous vous retrouverez avec plus d'une sauvegarde de mois.

6
Mark Storey-Smith
  1. Ne prenez pas la base de données hors ligne. N'arrêtez pas non plus le serveur. Soit pourrait rendre la base de données totalement inaccessible.

  2. Prenez une sauvegarde complète "Copie seulement".

  3. Essayez de lire le fichier de sauvegarde avec Rouge-gate Datacompare

  4. utilisez cette requête avec les valeurs d'allocation_unit_id que vous avez dans la sortie CheckDB:

    Sélectionnez O.Name, p.index_id, p.partition_number à partir de sys.allocation_units un joint sys.system_internals_partitions p sur A.Container_id = p.Partition_Id Rejoindre sys.all_Objects o sur p.Object_id = o.Object_id si A.Alocation_Unit_id = '281474977103872 "

Il devrait vous montrer le nom d'objet affecté.

  1. restaurer la base de données avec un nom différent (pourrait échouer)

  2. exécutez CheckDB avec l'option de réparation "Réparateur_rebuild" sur la restauration. Si la restauration a échoué, utilisez l'original.

  3. si rien n'a travaillé jusqu'à présent, utilisez l'option "réparateur_allow_data_loss" de DBCC CheckdB.

  4. si cela ne fonctionne pas non plus, engagez un consultant avec une expérience dans le champ de récupération de la corruption (comme moi)

4
Sebastian Meine