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 :

Faire un insert qui ne soit pas inclu dans un rollback global


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Par défaut Faire un insert qui ne soit pas inclu dans un rollback global
    Bonjour,

    J'ai mis en place une gestion d'erreurs par try catch / rollback qui fonctionne bien.

    Lors d'une erreur je renvoie un message mais au préalable je l'enregistre dans la base.

    Le problème c'est que lors du rollback général je perds cet enregistrement.

    Je souhaite donc savoir s'il est possible d'indiquer qu'une série d'instructions ne doit pas être "rollbaquée".

    D'avance merci pour votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 142
    Par défaut
    Tu peux définir un point de sauvegarde dans ta transaction grâce à l'instruction SAVE TRAN name.
    Si ensuite tu fais un ROLLBACK TRAN name, toutes les instructions précédant le point de sauvegarde ne seront pas "rollbackées".

    Et avec les transactions imbriquées, tu peux choisir une série d'instructions qui ne seront pas rollbackées.
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    BEGIN TRAN
    	BEGIN TRAN 
    		INSERT INTO ma_table VALUES(1)
    	ROLLBACK TRAN
    	BEGIN TRAN 
    		INSERT INTO ma_table VALUES(2) 
    	SAVE TRAN xxx
    		INSERT INTO ma_table VALUES(3) 
    	ROLLBACK TRAN xxx
    COMMIT TRAN
    va uniquement insérer dans la table la valeur 2.

    En espérant que cela puisse t'aider...

  3. #3
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    en passant par un xp_cmdshell peut être (a vérifier )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    declare @str varchar(500)
    BEGIN TRAN
    		INSERT INTO ma_table VALUES(1)
    set @str='INSERT INTO ma_table VALUES(2)'
    xp_cmd_shell @str
    		INSERT INTO ma_table VALUES(3) 
    COMMIT TRAN

  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
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    il n'est pas logique d'inscrire des données de suivi d'erreur dans le SGBDR. SI le SGBDR a un problème par exemple journal plein, vous pouvez avoir l'erreur mais ne jamais pouvoir l'inscrire pour les mêmes raisons. C'est pour cela que l'on écrit les erreurs dans des journaux qui ne sont en définitif que de simples fichiers texte.

    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. [MySQL] INSERT qui ne fonctionne pas
    Par djudjublondin dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/08/2007, 19h46
  2. [MySQL] Insert qui n enregistre pas ?
    Par nikki113 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/06/2006, 20h31
  3. [ODBC] une requete d'insertion qui ne fonctionne pas
    Par boulhous dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/05/2006, 13h56
  4. Insert qui ne fonctionne pas
    Par Nyrianne dans le forum Outils
    Réponses: 7
    Dernier message: 09/01/2006, 17h50
  5. [Stratégie] Faire un jeu qui ne soit pas lent
    Par Patryk403 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 25/09/2005, 20h10

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