IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Fichier .mdf corrumpu


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut Fichier .mdf corrumpu
    bonjour à tous,
    mon fichier .mdf se trouve sur un support de disque défectueux, j'ai alors copié le fichier .mdf sur un support sain.
    Malheureusement, en l'attachant, ma base est en mode lecture et je n'arrive pas à décocher l'option Lecture seule.
    J'ai alors opté de faire un DBCC CHECKTABLE de toutes mes tables, ce que je trouve plutôt long.
    Que puis je faire pour réparer ma base de données?
    J'étais entrain de songer à faire une importation complète de ma base de données sur une autre base, qu'en pensez vous?
    Merci de votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Citation Envoyé par alicia26 Voir le message
    bonjour à tous,
    mon fichier .mdf se trouve sur un support de disque défectueux, j'ai alors copié le fichier .mdf sur un support sain.
    Il faut aussi copier le journal de transaction (fichier .ldf)
    Citation Envoyé par alicia26 Voir le message
    Malheureusement, en l'attachant, ma base est en mode lecture et je n'arrive pas à décocher l'option Lecture seule.
    J'ai alors opté de faire un DBCC CHECKTABLE de toutes mes tables, ce que je trouve plutôt long.
    Que puis je faire pour réparer ma base de données?
    Même réponse : Il faut aussi copier le journal de transaction (fichier .ldf)
    Et vérifier lors de "Attach" si le fichier journal de transaction est au bon emplacement ainsi que le fichier de données .mdf de la base que tu veux restaurée.
    J'étais entrain de songer à faire une importation complète de ma base de données sur une autre base, qu'en pensez vous?
    Merci de votre aide.
    Oui c'est une autre possibilité si tu as du mal avec la 1ere méthode de restauration de ta base
    A+
    Etienne ZINZINDOHOUE
    Etienne ZINZINDOHOUE
    Billets-Articles

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    N'avez-vous pas de backup de cette BD ? Si non, il faudra peut-être penser à en faire à l'avenir

    Si vous n'avez pas le log de transaction ni de backup, sachez que vous pouvez tenter de créer votre base de données avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE DATABASE maBD ... FOR ATTACH_REBUILD_LOG
    Une fois cela fait, faites immédiatement une sauvegarde complète de votre base de données

    @++

  4. #4
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut
    bonjour et merci pour vos posts!
    effectivement zinzineti, j'ai peut être omis de préciser,mais c'est les deux fichiers(mdf et ldf) que j'ai déplacé.

    Oui elsuket,sauf que ma dernière restauration a échoué.
    j'ai essayé de lancer ta requête, mais
    j'ai le message suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Serveur*: Msg 102, Niveau 15, État 1, Ligne 1
    Syntaxe incorrecte, vers 'ATTACH_REBUILD_LOG'.

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Quelle est l'instruction que vous avez utilisé ?
    Voici un squelette :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE DATABASE maBD
    ON
    (
    	NAME = monNomDeFichierLogique,
    	FILENAME = 'C:\monFichier.mdf'
    ) FOR ATTACH_REBUILD_LOG
    Mais comme vous avez le journal de transactions, vous avez eu raison de l'attacher.

    Que se passe-t-il lorsque, après l'avoir attachée, vous tentez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    USE master
    GO
    ALTER DATABASE maBD SET READ_WRITE
    ?

    Si cela ne fonctionne pas, tentez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    USE master
    GO
    ALTER DATABASE maBD SET EMERGENCY
    GO
    DBCC CHECKDB (maBD, REPAIR_ALLOW_DATA_LOSS)
    Si vous obtenez le message suivant :

    Msg 7919, Level 16, State 3, Line 1
    Repair statement not processed. Database needs to be in single user mode.
    Essayez :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    USE master
    GO
    ALTER DATABASE maBD SET SINGLE_USER
    GO
    DBCC CHECKDB (maBD, REPAIR_ALLOW_DATA_LOSS)
    GO
    Et normalement ça devrait bien se passer, même si ce que vous retourne SQL Server à la console de SSMS est long

    Si vous avez passé maBD en SINGLE_USER, il vous faudra ensuite exécuter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    USE Master
    GO
    ALTER DATABASE maBDSET MULTI_USER;
    GO
    USE maBD;
    GO
    @++

  6. #6
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut
    Quelle est l'instruction que vous avez utilisé ?
    CREATE DATABASE maBD ... FOR ATTACH_REBUILD_LOG

    elsuket, juste pour préciser que j'ai changer de serveur à ma base de données.
    j'espère qu'en utilisant la base master, il n'aura pas trop de soucis, puisque je suis sur sql server 2000.

  7. #7
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    j'espère qu'en utilisant la base master, il n'aura pas trop de soucis, puisque je suis sur sql server 2000.
    Sous SQL Server 2000 ou autre, le fait de mettre USE MASTER ne fait que vous placer dans le contexte de cette base de données.
    Comme vous le voyez, nous n'effectuons aucune opération sur cette base de données.
    Donc je dirai que vous pouvez y aller les yeux (presque) fermés

    @++

  8. #8
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut
    Bonjour à tous,
    j'ai une fois de plus encore besoin de votre aide. J'ai copié la grande partie de mes données d'une base à l'autre, sauf que je suis confronté à une erreur lors de la copie de deux tables.
    L'erreur qu'il m'affiche est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 601 , Niveau 12, Etat 3,Ligne 1 
    Impossible de continuer l'analyse avec NOLOCK parce que les données ont bougé"
    Quelqu'un a t-il une idée???
    Merci.

  9. #9
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Cela est certainement dû à certaines données corrompues de votre table.

    Essayez de faire la même chose par lots plus petits pour voir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO ..
    SELECT TOP XXX FROM TABLE ORDER BY <colonne>
    ++

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    En +, merci de poster le résultat de la commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dbcc checkdb('nomBase') with NO_INFOMSGS , ALL_ERRORMSGS 
    GO
    David B.

  11. #11
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut
    salut,
    dbaffaleuf, ci après le résultat de la réquête
    dbcc checkdb('nomBase') WITH NO_INFOMSGS , ALL_ERRORMSGS
    GO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Serveur*: Msg 8909, Niveau 16, État 1, Ligne 1
    Erreur de table : Objet ID = 0, index ID*=*0, page ID = (1:7688651). ID de page de l'en-tête de page = (0:0).
    Serveur*: Msg 8909, Niveau 16, État 1, Ligne 1
    Erreur de table : Objet ID = 0, index ID*=*0, page ID = (1:18032391). ID de page de l'en-tête de page = (0:0).
    Serveur*: Msg 8928, Niveau 16, État 1, Ligne 1
    Objet ID = 139863565, index ID = 0 : La page (1:18032390) ne peut pas être traitée. Pour plus d'informations, consultez les autres erreurs.
    Serveur*: Msg 8939, Niveau 16, État 1, Ligne 1
    Erreur de table : Objet ID = 139863565, index ID = 0, page (1:18032390). Échec du test (m_freeCnt == freeCnt). Les valeurs sont 1352 et 8078.
    Serveur*: Msg 8939, Niveau 16, État 1, Ligne 1
    Erreur de table : Objet ID = 139863565, index ID = 0, page (1:18032390). Échec du test (emptySlotCnt == 0). Les valeurs sont 9 et 0.
    Serveur*: Msg 8928, Niveau 16, État 1, Ligne 1
    Objet ID = 139863565, index ID = 0 : La page (1:18032391) ne peut pas être traitée. Pour plus d'informations, consultez les autres erreurs.
    Serveur*: Msg 8928, Niveau 16, État 1, Ligne 1
    Objet ID = 999674609, index ID = 0 : La page (1:7688650) ne peut pas être traitée. Pour plus d'informations, consultez les autres erreurs.
    Serveur*: Msg 8939, Niveau 16, État 1, Ligne 1
    Erreur de table : Objet ID = 999674609, index ID = 0, page (1:7688650). Échec du test (m_freeCnt == freeCnt). Les valeurs sont 1354 et 8078.
    Serveur*: Msg 8939, Niveau 16, État 1, Ligne 1
    Erreur de table : Objet ID = 999674609, index ID = 0, page (1:7688650). Échec du test (emptySlotCnt == 0). Les valeurs sont 9 et 0.
    Serveur*: Msg 8928, Niveau 16, État 1, Ligne 1
    Objet ID = 999674609, index ID = 0 : La page (1:7688651) ne peut pas être traitée. Pour plus d'informations, consultez les autres erreurs.
    CHECKDB a trouvé 0 erreurs d'allocation et 2 erreurs de cohérence non associées à un quelconque objet unique.
    CHECKDB a trouvé 0 erreurs d'allocation et 4 erreurs de cohérence dans la table 'PSL_0608' (objet ID = 139863565).
    Serveur*: Msg 8928, Niveau 16, État 1, Ligne 1
    Objet ID = 999674609, index ID = 0 : La page (1:7691769) ne peut pas être traitée. Pour plus d'informations, consultez les autres erreurs.
    Serveur*: Msg 8944, Niveau 16, État 1, Ligne 1
    Erreur de table : Objet ID = 999674609, index ID = 0, page (1:7691769). Ligne 2. Échec du test (offsetNull >= BASEOFFSET). Les valeurs sont 0 et 4.
    CHECKDB a trouvé 0 erreurs d'allocation et 6 erreurs de cohérence dans la table 'PSL_0108' (objet ID = 999674609).
    CHECKDB a trouvé 0 erreurs d'allocation et 12 erreurs de cohérence dans la base de données 'IN_ERICSS'.
    repair_allow_data_loss est le minimum de niveau de réparation pour les erreurs trouvés par DBCC CHECKDB (IN_ERICSS ).

  12. #12
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Visiblement vous avez une corruption des données d'entête pour les pages 18032390, 7688650 et 7691769.

    Vous pouvez tenter (après avoir sauvegardé le fichier mdf) une réparation à l'aide de DBCC CHECKDB('IN_ERICSS', REPAIR_ALLOW_DATA_LOSS).

    ++

Discussions similaires

  1. [MSDE] Protection du fichier MDF
    Par papouAlain dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 25/11/2013, 14h23
  2. Fichiers MDF et LDF
    Par TicTacToe dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/07/2006, 10h41
  3. Lecture de la taille réelle du fichier .mdf
    Par carjo dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 13/01/2006, 19h42
  4. Comment Exploiter un fichier MDF
    Par Actarus69 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 02/11/2005, 14h32
  5. Fichiers MDF et LDF
    Par mohamed dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/03/2005, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo