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

Développement SQL Server Discussion :

Seulement une partie d'une Transaction Sql est enregistrée


Sujet :

Développement SQL Server

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Seulement une partie d'une Transaction Sql est enregistrée
    Bonjour à tous
    J'ai un problème au niveau d'une transaction sql : j'ai une application réalisée en VB6 avec une conection Adodb sur une base Sql server 2000, il y a une procédure qui enregistre des données dans 6 tables , le tout dans une transaction , environ une fois sur 10000 opérations je trouve que seulement les 2 derniers requêtes sql sont enregistrés dans la base , j'ai fait une trace sql, j'ai trouvé que les 6 requetes ont été exécutés et la transaction se Commit normalement, sauf que j'ai remarqué en comparant avec la trace des requêtes qui ont affecté les 6 tables qu'il y a 2 lignes vides juste avant les 2 dernières requete : voici la structure de la trace : ( j'ai pas mis les requêtes pour simplifier )

    Ligne EventClass TextData
    1 12 set implicit_transactions on
    2 50 NULL
    3 50 NULL
    4 50 NULL
    5 12 Insert into table1
    6 12 Insert into table2
    7 12 Update Table3
    8 12 Update Table4
    9 50 NULL
    10 12 Select from table5
    11 50 NULL
    12 12 Update Table5
    13 12 Update Table6
    14 50 NULL
    15 12 IF @@TRANCOUNT > 0 COMMIT TRAN
    16 12 set implicit_transactions off



    Seulement table5 et Table6 on été affecté, a noter que la durée d'exécution de la ligne 9 et de la ligne 10 sont anormalement élevés( 1seonde chacune) et la différence par rapport à une transaction qui a affecté les 6 tables : les ligne 9 et 11 n'existent pas
    ça fait des mois que j'essaie de trouver une solution en vain, Merci pour votre aide

  2. #2
    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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Le fait que la colonne TextData de la trace ne soit pas valuée pour certaines lignes n'indique pas un problème.
    Si vous regardez dans les filtres que vous pouvez ajouter, dont ceux que vous pouvez poser sur la colonne TextData, il y a une coche "Exclure les lignes vides"

    Pourriez vous nous donner le code de votre procédure stockée, et éventuellement la structure des tables ?
    Est-ce que ces erreurs se produisent à une heure de forte activité sur le serveur ?
    Y'a-t-il des deadlocks ? (catégorie Locks / evénements deadlock graph et deadlock chain).

    @++

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour , Merci pour votre réponse, d'abord concernant l'activité du serveur je peux pas affirmer que l'erreur se produit durant une heure de grande activité, le système fonctionne de façon régulière durant toute la journée peut être au moment de l'erreur il y a eu un traitement qui a chargé le serveur, la trace que j'ai faite je l'ai appliqué seulement sur l'application en cause, il ya plus de 50 utilisateurs avec des centaines de transactions par minutes donc ça sera pas évident de tout tracer, mais je vais ajouter les événements de verrous sur ma trace et attendre que l'erreur se produise de nouveau, , en moyenne ça arrive 2 fois par mois, concernant le code c'est pas une procédure stocké mais un code vb , le voici ci joint , la structure des tables aussi et la trace complète de l'opération qui a causé le problème, à noter qu'il y a des petits déclencheurs sur quelques tables mais je pense pas que la cause du problème car ils sont simples et ne font qu'une opération d'insertion dans d'autres tables utilisées pour une opération de réplication.
    et Merci
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Dans votre code VB vous ne gérez pas les erreurs. Il est donc possible que des requêtes ne s'effectuent pas suite à une erreur alors que vous validez systématiquement la transaction.

    C'est d'ailleurs une hérésie que de faire des transactions côté client. C'est comme cela que l'on flingue les performances d'une base de données.

    Passez tout ceci dans une procédure stockée, démarrez la transaction dans la proc stock et testez les exceptions pour chaque commande SQL.

    Lisez ce que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/s...chniques/#L1.7

    Pour développer des procédures stockées, c'est simple... Lisez ce que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/s...ransactsql/#L4

    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/ * * * * *

Discussions similaires

  1. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  2. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

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