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

MS SQL Server Discussion :

nombre d'enrigistrement incohérent


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut nombre d'enrigistrement incohérent
    Bonjour,

    je cherche à connaitre le nombre d'enregistrement d'une table.

    Pour cela, j'utilise deux méthodes :
    - select count(*) from ma_table
    - la solution présente dans la FAQ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select O.Name as Table_Name, I.Rows as Rows_Count
    FROM sysobjects O join sysindexes I
              ON O.id=I.id
    Where O.xtype='U'
    => les deux solutions me donnent des infos incohérentes.
    Comment faire pour resynchroniser les deux ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Par défaut
    J'essayerais:

    CREATE STATISTICS statistics_name
    ON { table | view } ( column [ ,...n ] )
    [ WITH
    [ [ FULLSCAN
    | SAMPLE number { PERCENT | ROWS }
    | STATS_STREAM = stats_stream ] [ , ] ]
    [ NORECOMPUTE ]
    ] ;

  3. #3
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut
    Bonjour,

    je pense que j'ai pas vraiment tout compris.

    En quoi créer un STATISTICS va me permettre de corriger mon problème.
    Il faut que je corrige le problème et non pas trouver un moyen de contourner le problème. En effet, je travaille sur un serveur de production qui contient plusieurs milliers de tables. Contourner le problème signifierait que je dois modifier des procédures de chargement de table et cela n'est pas possible dans mon cas.

  4. #4
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    Problème, problème, quel est-il ce problème ?

    Ta requête va te donner un rowcount d'index et de statistiques de colonnes. Il se peut que la valeur des statistiques ne soit plus à jour, auquel cas un UPDATE STATISTICS peut aider. Par contre, si tu te bases sur les vrais index, il ne devrait pas y avoir de différence.
    Que donne ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT O.Name AS Table_Name, I.Rows AS Rows_Count
    FROM sysobjects O JOIN sysindexes I
              ON O.id=I.id
    WHERE	O.xtype='U' AND
    		I.indid < 2

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Par défaut
    je pense que j'ai pas vraiment tout compris.

    En quoi créer un STATISTICS va me permettre de corriger mon problème.
    Il faut que je corrige le problème et non pas trouver un moyen de contourner le problème. En effet, je travaille sur un serveur de production qui contient plusieurs milliers de tables. Contourner le problème signifierait que je dois modifier des procédures de chargement de table et cela n'est pas possible dans mon cas.
    J'ai suggéré une piste d'investigation. En créant des statistiques indépendantes, tu aurais pu savoir si les statistiques de ta base sont à jour ou non. Lequel cas où elles ne le seraient pas, il aurait fallu vérifier les options présentement en fonction.

    Et si tu viens sur un forum en croyant que les gens vont résoudre tes problèmes pour toi, tu risques d'être franchement déçu et même de devenir antipathique (en tous les cas, ça a marché avec moi).

    Si tu n'es pas ouvert à connaître de nouveaux outils pour t'aider, ne viens pas pleurer comme un Madeleine.

  6. #6
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut
    Babyneedle > Avant de faire des réponses comem ce que tu viens de faire, il serais utilises que tu regardes avec un peu plus de details qui pose la question. Je pose que très peu de questions sur ce forum, mais j'apporte beaucoup d'aide ( environ 95% de mes posts ). Je ne viens donc pas sur les forum pour avoir des réponses toutes faites mais plutot pour avoir des informations sur des sujets que je ne maitrise pas totalement.

    En réponse à ton premier message, je demandais simplement un peu plus de détails sur ce que tu avais proposé ? Je suis prêt à mettre en place ta solution mais avant de mettre en place une solution, je prefère la comprendre. Je pense que c'est ce un comportement qui est plutot normal, non ?

    Ensuite, la derniere partie de ma réponse avait comme seul but de préciser un peu le context dans lequel je me trouve et non pas de discréditer ta réponse.

  7. #7
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut
    Citation Envoyé par rudib
    Bonjour,

    Problème, problème, quel est-il ce problème ?
    celui ci
    Citation Envoyé par benratti dans son premier message
    => les deux solutions me donnent des infos incohérentes.
    Comment faire pour resynchroniser les deux ?
    Citation Envoyé par rudib
    Ta requête va te donner un rowcount d'index et de statistiques de colonnes. Il se peut que la valeur des statistiques ne soit plus à jour, auquel cas un UPDATE STATISTICS peut aider. Par contre, si tu te bases sur les vrais index, il ne devrait pas y avoir de différence.
    Que donne ceci ?
    le resultat de la requête suivante est 13483 pour la table concerné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT O.Name AS Table_Name, I.Rows AS Rows_Count
    FROM sysobjects O JOIN sysindexes I
              ON O.id=I.id
    WHERE	O.xtype='U' AND
    		I.indid < 2
    alors que la requête suivante donne 13870
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) from ma_table

  8. #8
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Salut,

    Merci d'avoir donné des détails, ça aide. Jamais vu ce comportement. Un index correctement maintenu doit donner le bon rowcount.

    - peux-tu poster le code de création de ta table (DDL) avec celui de tous les index ?
    - es-tu sur SQL Server 2000 ou 2005 ?
    - ce rowcount est-il différent sur un seul index ou tous ?
    - s'agit-il d'index ordonné ou non ordonné ?
    - si tu es sur SQL Server 2005, tes index sont-ils ONLINE ?
    - sur l'index, STATISTICS_NORECOMPUTE est-il à OFF ?
    - as-tu essayé de faire un UPDATE STATISTICS, comme indiqué précédemment ?

Discussions similaires

  1. Incohérence du nombre de sessions max
    Par puck78 dans le forum Administration
    Réponses: 18
    Dernier message: 14/03/2012, 09h30
  2. Nombre de lignes retournées incohérent : table corrompue ?
    Par Shuret dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 09/03/2011, 18h16
  3. [Comparatifs] Limites nombres tables et quantité de données
    Par benj63 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 13/06/2002, 21h31
  4. Nombre de fichiers ouverts simultanément
    Par matrixfan dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/05/2002, 17h47
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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