Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 16
    Points : 11
    Points
    11

    Par défaut Récuperer une erreur SQL Server via Dataset typé

    Bonjour,

    J'utilise un Dataset Typé dont l'une des datatables est représentée par une requête composée de deux tables dans la base de données. Mon problème est que ma procedure stocké pour l'ajout, effectue 2 instructions INSERT (une pour chaque table). Mon problème est que je ne suis pas capable de récupérer une erreur qui survient dans la procédure stocké de façon convenable.

    Présentement j'ai

    Code :
    1
    2
    3
    4
    5
     
    INSERT INTO TABLE1 --Succès
    INSERT INTO TABLE2 -- Erreur
    IF @@ERROR > 0
    	RAISERROR('Erreur', 16, 1)
    Cette instruction ajoute dans la table 1, mais pas dans la table 2. Du coté du SQLDataAdapter, il n'y a pas d'erreur donc la transaction réussit (COMMIT)

    J'ai essayé l'alternative suivante
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    BEGIN TRAN
     
    INSERT INTO TABLE1 --Succès
    INSERT INTO TABLE2 -- Erreur
     
    IF @@ERROR > 0
     ROLLBACK TRAN
    ELSE
     COMMIT TRAN
    Le problème ici est qu'étant donné que le SQLDataadapter demarre déjà une transaction, je me retrouve donc avec des transactions imbriquées.

    Je ne veux pas toucher au mécanisme automatique des datasets mis à part le système d'évènement (ex. : RowUpdated)

    Une solution du coté SQL server serait plus que bienvenue

    Merci
    DoOmX

  2. #2
    Membre du Club
    Homme Profil pro Patrick LAMBIN
    Retraité
    Inscrit en
    décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrick LAMBIN
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : décembre 2010
    Messages : 32
    Points : 40
    Points
    40

    Par défaut Variables utilisées pour le traitement des erreurs

    Puisque vous êtes dans une procédure stockée , je vous conseillerais de tester @@ERROR et de récupérer différentes valeurs liées à l'erreur.
    Voir les liens suivants ( pour une fois , je les donne en français )
    http://msdn.microsoft.com/fr-fr/libr...(SQL.105).aspx
    http://msdn.microsoft.com/fr-fr/libr...(SQL.105).aspx
    http://msdn.microsoft.com/fr-fr/libr...(SQL.105).aspx

    si vous avez développé avec les classes de l'espace de nom System.Data.SqlClient, vous retrouverez facilement les équivalents de Class,ErrorCode,Line,Message,Server,Procedure,State de la classe SqlException

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •