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 :

[MSSQL 2000] Erreurs d'allocation


Sujet :

Administration SQL Server

  1. #21
    Expert éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    m_flagBits = 0x0 et m_tornBits = 49153
    >> @dbaffaleuf
    Il me semble .... que si la page est lue directement depuis le buffer SQL Server il n'est pas forcé que tu vois la valeur correspondant à la méthode de vérification d'intégrité de la page à moins que la page soit elle même corrompue. Tu me confirmeras peut être .. ??

    >> @uigsounet
    En regardant un peu vos pages, on voit que l'extent correspond à la page est alloué mais n'est pas déclaré dans la page IAM correspond à l'objet '566663146' de la table 'PMTC_COMMERCE'. Le message d'erreur de la commande DBCC vous le dit d'ailleurs.

    Vous pouvez le vérifier en exécutant la commande (aux erreurs de syntaxe près) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    USE PMTC_COMMERCE
    GO
     
    DECLARE @objet_name SYSNAME
    SET @objet_name = OBJECT_NAME(566663146)
     
    DBCC IND('PMTC_COMMERCE', @objet_name, -1)
    En principe la page no 109880 ne devrait pas être présente dans votre cas.
    Si la réparation ne fonctionne pas le seul moyen est la restauration d'une sauvegarde saine ....

    ++

  2. #22
    Membre éprouvé
    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
    Points : 1 069
    Points
    1 069
    Par défaut
    OK je comprends mieux... Msg 8905 indique en gros qu'une page référencée par le plan d'allocation global dans le fichier (GAM = Global Allocation Map) ne se trouve appartenir à aucun objet (IAM = Index Allocation Map, le plan d'allocation par table/index). Donc deux pages se baladent et n'appartiennent à aucun objet, ce qui explique aussi que tes utilisateurs ne sont pas impactés. Comme indiqué dans la sortie du dbcc en mode repair, REPAIR_ALLOW_DATA_LOSS ne peut pas réparer ces erreurs.

    Sans backup, il faut essayer de sortir toute la base et de la recharger ailleurs, par exemple avec l'assistant d'export, et relancer un checkdb sur la nouvelle base.

    En même temps, il faudrait jeter un coup d'oeil sur la machine sur lequel le problème est arrivé, dans l'eventvwr, pour voir s'il n'y a pas un pb matériel là dessous.

    Je répondrai par MP (ou par article s'il y a de quoi raconter) sur la question de m_tornbits / m_flagbits.

    A+,

    David B.
    David B.

  3. #23
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    Si la réparation ne fonctionne pas le seul moyen est la restauration d'une sauvegarde saine ....
    Pas uniquement car comme sa base semble fonctionner on peut extraire le DDL de la version actuelle (hors index) puis toutes les lignes de toutes les tables et réinjecter dans une nouvelle base et reconstruire les index !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #24
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Ceci dit, la première chose à faire de toute urgence est de déplacer les fichiers vers un système disque sain, car il y a fort à parier que c'est le disque qui est partit en vrille ou le contrôleur qui est HS.

    Vérifier que vous n'avez pas activé le contrôleur disque avec cache en écriture. Si c'est le cas, désactivez le. Vérifiez la pile... Sachez que certains cahce disque en écriture sont strictement incompatible avec les SGBDR. Votre fabriquant doit le certifier....

    Donc :
    1) sp_detach_db + déplacement des fichiers + sp_attach_db
    2) migration de la base avec reconstruction comme indiqué.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #25
    Expert éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Pas uniquement car comme sa base semble fonctionner on peut extraire le DDL de la version actuelle (hors index) puis toutes les lignes de toutes les tables et réinjecter dans une nouvelle base et reconstruire les index !
    Tu as raison mais en fait je parlais des données à restaurer qu'il a perdu avec les 2 extents .. je n'ai pas précisé ... celles-ci seront effectivement bien perdues ...

    ++

  6. #26
    Membre éprouvé
    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
    Points : 1 069
    Points
    1 069
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    Il me semble .... que si la page est lue directement depuis le buffer SQL Server il n'est pas forcé que tu vois la valeur correspondant à la méthode de vérification d'intégrité de la page à moins que la page soit elle même corrompue. Tu me confirmeras peut être .. ??
    Je ne sais pas trop quelles peuvent être les raisons valables pour que m_flagbits reste à 0x0: même en désactivant TPD dans une base en 2000, m_flagBits est à 0x8000 et m_tornBits à 0x0, ce qui est normal...

    David B.
    David B.

  7. #27
    Expert éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Effectivement .. mais au fait quelle est la méthode employée sur la base de données en question ? (TORN_PAGE ou NONE)

    ++

  8. #28
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Si l'objet est un index, toutes les données peuvent être récupérées. Si c'est une table.... walou !

    J'ai pas suivi tout le fil... mais bon !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  9. #29
    Expert éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Si l'objet est un index, toutes les données peuvent être récupérées. Si c'est une table.... walou !
    Je pense également que cela ne sera pas possible .. en fait c'est juste par curiosité .... pour éclaircir ce problème de valeur de flag ... si on pouvait avoir une réponse cela serait bien :-)

  10. #30
    Membre éprouvé
    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
    Points : 1 069
    Points
    1 069
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Si l'objet est un index, toutes les données peuvent être récupérées.
    Hello Frédéric,

    Ce ne sont pas des pages d'index, sinon le CHECKDB renverrait REPAIR_REBUILD comme solution minimale de réparation.

    David B.
    David B.

  11. #31
    Expert éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Ce ne sont pas des pages d'index, sinon le CHECKDB renverrait REPAIR_REBUILD comme solution minimale de réparation.
    ... et le flag m_indexId (=0) des pages concernées le confirme (sur la version 2000 on a bien la relation entre l'objet et l'index auquel appartient la page)

    ++

  12. #32
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    OK, boys, donc j'en reviens à mon premier post : sauvegarde + restore !!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  13. #33
    Membre éprouvé
    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
    Points : 1 069
    Points
    1 069
    Par défaut
    Juste une mise à jour pour les guicques au sujet de m_flagBits / m_tornBits.

    m_flagBits à une valeur de 0 peut signifier deux choses, sachant qu'en version 2000, les fichiers de données étaient toujours zéro-initialisés (pas de IFI):
    - Soit la page n'a pas été formatée: elle n'est ni une page de donnée, ni une page d'index, ni une PFS, SGAM, GAM, ML, DIFF, IAM, ce qu'on veut. Elle se trouve dans un extent qui n'est tout simplement pas encore utilisé.
    - Soit elle est corrompue (le scoop !). C'est le cas ici car m_type=1 signifie qu'il s'agit d'une page de donnée. m_tornBits lui décrit bien la séquence de bits utilisés par le TPD. Voilà ce qui s'appelle enfoncer une porte ouverte.

    Celà dit, je persiste, pour que ce genre de choses arrive, il y a potentiellement qq chose qui cloche côté sous-système IO sur la machine origine. Je suis d'avis qu'un petit coup de SQLIOSIM ne ferait pas de mal.
    (http://support.microsoft.com/kb/231619)

    David B.
    David B.

  14. #34
    Expert éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Ok merci pour l'info

    Un petit chkdsk et / ou le parcours du journal d'événement est aussi parfois très révélateur.

    ++

Discussions similaires

  1. [MSSQL 2000] Réinitialiser un compteur d'auto-incrément
    Par major2 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/01/2006, 14h20
  2. [MsSQL 2000]Conversion heure GMT
    Par prophetky dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/08/2005, 17h27
  3. Import de structure d'index d'ORACLE à MSSQL 2000
    Par vincentvouthier dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 17h11
  4. [Access 2000][Erreur Win XP] A l'ouverture de mon logiciel
    Par portu dans le forum Bases de données
    Réponses: 5
    Dernier message: 10/05/2005, 09h50
  5. [MSSQL 2000]Copie de tout le data
    Par royrremi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/11/2004, 09h26

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