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 :

[SQL Server2005]Un bug étrange


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    /
    Inscrit en
    Février 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : /

    Informations forums :
    Inscription : Février 2003
    Messages : 434
    Par défaut [SQL Server2005]Un bug étrange
    Bonjour,
    Comme l'indique le titre, je suis confronté à un comportement assez étrange. Je fait deux requêtes quasiment identiques (la première porte sur deux colonnes, la seconde sur une seule) sur les mêmes données dans la même table. (cf la copie d'écran jointe)

    La seconde me renvoie un genre de concaténation de données provenant d'une autre table .

    Ce problème ne me bloque absolument pas mais cela m'intrigue quand même.

    Quelqu'un aurait-il une idée de l'origine de cette bizarrerie?

    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    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,

    Intéressant, on se croirait dans Access où "nom" est ambigu.

    Peux-tu faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SET SHOWPLAN_XML ON
    GO
     
    SELECT DISTINCT nom FROM Logs_SP
    GO
     
    SET SHOWPLAN_XML OFF
    GO
    et poster le XML de résultat ?

  3. #3
    Membre chevronné
    Homme Profil pro
    /
    Inscrit en
    Février 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : /

    Informations forums :
    Inscription : Février 2003
    Messages : 434
    Par défaut
    Voilà le résultat

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.0" Build="9.00.2050.00">
      <BatchSequence>
        <Batch>
          <Statements>
            <StmtSimple StatementText=" &#xD;&#xA;SELECT DISTINCT nom FROM Logs_SP&#xD;&#xA;" StatementId="1" StatementCompId="1" StatementType="SELECT" StatementSubTreeCost="2.10879" StatementEstRows="10093" StatementOptmLevel="FULL">
              <StatementSetOptions QUOTED_IDENTIFIER="false" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="false" ANSI_NULLS="false" ANSI_PADDING="false" ANSI_WARNINGS="false" NUMERIC_ROUNDABORT="false" />
              <QueryPlan CachedPlanSize="9">
                <RelOp NodeId="0" PhysicalOp="Hash Match" LogicalOp="Aggregate" EstimateRows="10093" EstimateIO="0" EstimateCPU="1.40851" AvgRowSize="38" EstimatedTotalSubtreeCost="2.10879" Parallel="0" EstimateRebinds="0" EstimateRewinds="0">
                  <OutputList>
                    <ColumnReference Database="[MaBase]" Schema="[dbo]" Table="[Logs_SP]" Column="nom" />
                  </OutputList>
                  <MemoryFractions Input="1" Output="1" />
                  <Hash>
                    <DefinedValues />
                    <HashKeysBuild>
                      <ColumnReference Database="[MaBase]" Schema="[dbo]" Table="[Logs_SP]" Column="nom" />
                    </HashKeysBuild>
                    <BuildResidual>
                      <ScalarOperator ScalarString="[MaBase].[dbo].[Logs_SP].[nom] = [MaBase].[dbo].[Logs_SP].[nom]">
                        <Compare CompareOp="IS">
                          <ScalarOperator>
                            <Identifier>
                              <ColumnReference Database="[MaBase]" Schema="[dbo]" Table="[Logs_SP]" Column="nom" />
                            </Identifier>
                          </ScalarOperator>
                          <ScalarOperator>
                            <Identifier>
                              <ColumnReference Database="[MaBase]" Schema="[dbo]" Table="[Logs_SP]" Column="nom" />
                            </Identifier>
                          </ScalarOperator>
                        </Compare>
                      </ScalarOperator>
                    </BuildResidual>
                    <RelOp NodeId="1" PhysicalOp="Clustered Index Scan" LogicalOp="Clustered Index Scan" EstimateRows="118482" EstimateIO="0.569792" EstimateCPU="0.130487" AvgRowSize="38" EstimatedTotalSubtreeCost="0.700279" Parallel="0" EstimateRebinds="0" EstimateRewinds="0">
                      <OutputList>
                        <ColumnReference Database="[MaBase]" Schema="[dbo]" Table="[Logs_SP]" Column="nom" />
                      </OutputList>
                      <IndexScan Ordered="0" ForcedIndex="0" NoExpandHint="0">
                        <DefinedValues>
                          <DefinedValue>
                            <ColumnReference Database="[MaBase]" Schema="[dbo]" Table="[Logs_SP]" Column="nom" />
                          </DefinedValue>
                        </DefinedValues>
                        <Object Database="[MaBase]" Schema="[dbo]" Table="[Logs_SP]" Index="[PK_Logs_SP]" />
                      </IndexScan>
                    </RelOp>
                  </Hash>
                </RelOp>
              </QueryPlan>
            </StmtSimple>
          </Statements>
        </Batch>
      </BatchSequence>
    </ShowPlanXML>

  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
    A priori, rien d'inquiétant.
    Que donne ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DBCC CHECKTABLE ('dbo.Logs_SP')

  5. #5
    Membre chevronné
    Homme Profil pro
    /
    Inscrit en
    Février 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : /

    Informations forums :
    Inscription : Février 2003
    Messages : 434
    Par défaut
    Voici le résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DBCC results for 'Logs_SP'.
    There are 118727 rows in 767 pages for object "Logs_SP".
    En tout cas, merci de t'intéresser à mon problème.

  6. #6
    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 vérifierais la structure de tous les index de la table.

    S'il n'existe pas d'index sur le champ nom, j'en ferais un...

    Et si tu fais la requête plus explicite?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DBCC DROPCLEANBUFFERS 
     
    SELECT T1.[NOM]
    FROM Logs_SP T1

  7. #7
    Membre chevronné
    Homme Profil pro
    /
    Inscrit en
    Février 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : /

    Informations forums :
    Inscription : Février 2003
    Messages : 434
    Par défaut
    De plus en plus étrange...
    J'ai créé l'index suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE NONCLUSTERED INDEX [I_Nom] ON [dbo].[Logs_SP] 
    (
    	[nom] ASC
    )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]
    Le résultat c'est un peu amélioré
    Les 17 premiers résultats affichés sont bon mais pour les 10200 autres, aucun changement.

    PS: j'avais oublié de préciser que ces mêmes requêtes sans le DISTINCT donnent le résultat escompté.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. connection .net et sql server2005
    Par tinhinan6 dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/03/2007, 10h09
  2. Bug étrange sur du single
    Par rodymary dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 31/08/2006, 15h52
  3. Réponses: 4
    Dernier message: 12/06/2006, 15h43
  4. Bug étrange
    Par xavier faure dans le forum Langage
    Réponses: 4
    Dernier message: 01/04/2006, 13h54
  5. [VB6]Bug étrange lié à l'horloge...
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 16/02/2006, 15h19

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