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

Sybase Discussion :

[Sybase] Comportement bizarre d'une table


Sujet :

Sybase

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [Sybase] Comportement bizarre d'une table
    Bonjour,

    Une des tables de ma base a un comportement bizarre...
    Je fais un premier select, par exemple :
    select * from toto where truc = 1 and bidule = 2

    je fais ensuite un autre select :
    select * from toto where truc = 1 and bidule = 2 and chouette = 3

    et ce select me ramène une ligne qui n'est pas dans le résulta du select précédent . Et visiblement, j'ai plusieurs dizaines de lignes dans ce cas.

    Qu'est ce que ça veut dire, et comment y remédier ?!

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Tu restreins les conditions, donc ton output devrait etre inferieur ou egal au premier.
    Il n'y a pas de raison SQL, a part si quelqu'un d'autre est en train d'ajouter des enregistrements par un autre biais.
    Quelle est la version de Sybase que tu utilises ?
    N'as-tu pas une reproduction de cas a nous soumettre ?

    Une autre explication pourrait venir d'une table ou d'un index corrompu : l'ajout de la condition ferait passer l'optimiseur par un autre chainage (un index sur le dernier champ de la condition, par exemple) et se perdrait dans les meandres d'un chainage corrompu. As-tu execute un dbcc checktable et dbcc tablealloc sur la table en question ?
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Le dbcc reindex se plante. Visiblement, il tombe sur une page qui appartient à une autre table que celle qui deconne. Visiblement cette table a du plomb dans l'aile, mais comment faire pour recuperer le coup ?

    Version de Sybase : 11.9.2

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657

  5. #5
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Corruption donc.

    Execute les ordres suivants et refile le message d'erreur complet (pas l'output total qui doit etre trop gros)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    use taBase
    go
    dbcc traceon(3604)
    go
    dbcc tablealloc(TaTable)
    select @@error
    dbcc checktable(TaTable)
    select @@error
    go
    PS : il te faut des droits SA pour ca
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

Discussions similaires

  1. Comportement bizarre d'une variable dynamique
    Par scoutiste dans le forum Débuter
    Réponses: 4
    Dernier message: 21/08/2013, 13h36
  2. Comportement bizarre d'une séquence
    Par al85 dans le forum Administration
    Réponses: 5
    Dernier message: 11/09/2009, 22h46
  3. Réponses: 6
    Dernier message: 17/06/2009, 15h11
  4. Réponses: 3
    Dernier message: 10/04/2008, 15h06

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