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 :

trigger, erreur et log


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 21
    Par défaut trigger, erreur et log
    Bonjour tout le monde!

    Voilà ma situation: j'ai deux serveurs SQL hébergeant des bases de données différentes (A et B). Sur ma base de données B, j'ai un trigger insert sur une table qui va faire des insert dans une table de la base de données A.

    En cas d'erreur dans l'insertion j'avais prévu de flagger l'enregistrement posant problème dans la base de données B. Seulement je n'arrive pas à le faire parce que s'il y a une erreur, le trigger fait un rollback général (ce qui est plutôt bien!).
    Mais du coup, je ne sais pas comment flagger l'enregistrement de la base de données B pour ensuite le retrouver.

    Qqn a-t-il une idée?

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Il suffit de "flagger" à l'envers : considérer au départ que c'est pas OK et dans le trigger mettre à OK. Si rollback alors pas OK restera !

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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 21
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Il suffit de "flagger" à l'envers : considérer au départ que c'est pas OK et dans le trigger mettre à OK. Si rollback alors pas OK restera !

    A +
    Salut, effectivement c'est une excellente idée... Mais je ne peux pas flagger à l'envers parce que le seul endroit où je peux flagger à OK ou pas c'est dans mon trigger. Et s'il y a une erreur ça veut dire que mon flag n'est pas setté correctement :-)

    Et à priori je ne peux pas utiliser une valeur par défaut directement dans la base parce que mon flag peut avoir 3 valeurs: ne pas traiter, traité, erreur.

    Est-ce que qqn aurait une autre idée?

    Merci pour l'aide

  4. #4
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Passer par autre chose qu'un trigger qui invalide une transaction si une erreur se produit.

    Pourquoi ne pas faire cela avec une procédure stockée qui s'exécuterait de manière cyclique par le biais de l'agent SQL Server ?

    ++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 21
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    Pourquoi ne pas faire cela avec une procédure stockée qui s'exécuterait de manière cyclique par le biais de l'agent SQL Server ?
    Malheureusement le trigger est une contrainte faisant partie du cahier des charges :-( pour cause de besoin d'immédiateté de la réplication des données entre les deux bases (même si ce besoin est plus que discutable).

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par MuadDib_CH Voir le message
    Malheureusement le trigger est une contrainte faisant partie du cahier des charges :-( pour cause de besoin d'immédiateté de la réplication des données entre les deux bases (même si ce besoin est plus que discutable).
    Dans ce cas, pourquoi réinventer l'eau tiède et ne pas utiliser la réplication (ce qui est justement faite pour faire de la .... réplication).

  7. #7
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Citation Envoyé par MuadDib_CH Voir le message
    Malheureusement le trigger est une contrainte faisant partie du cahier des charges :-( pour cause de besoin d'immédiateté de la réplication des données entre les deux bases (même si ce besoin est plus que discutable).
    Une stored procedure peut faire la meme chose.

Discussions similaires

  1. [ASE 12.5.3] - Erreur segment log - curunreservedpgs > size
    Par lsone dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 22/03/2007, 13h34
  2. [Trigger] Erreur 1136 lors d'une insertion
    Par tyrant dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 24/05/2006, 21h41
  3. TRIGGER Erreur PLS-00357
    Par fuhraih dans le forum Oracle
    Réponses: 6
    Dernier message: 19/04/2006, 10h20
  4. [10g] Trigger erreur de compilation
    Par flasomm dans le forum Oracle
    Réponses: 2
    Dernier message: 03/01/2006, 03h07
  5. [Debug] [Trigger] erreur d'exe pas très précise
    Par viena dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/08/2005, 11h36

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