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 :

Evenement Insert,Update,Delete sur une table


Sujet :

Développement SQL Server

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Evenement Insert,Update,Delete sur une table
    Bonjour

    Je travalle en .NET cSharp et j'aimerais recevoir un évennement si certaines tables sont Modifiées (MSSS 2008)

    J'essaye de googeller un peu mais ce que je trouve ne me donne pas encore une idée tres claire de la chose

    Entre autre
    Niveau DB

    Niveau C#

    - Est il possible de limiter les event a certaines tables seulement ?
    - Pourquoi dans l'exemple C# on associe une commande Select a la Classe SqlDepedency qui devrait notifier un Insert ou un update ?

    Bref je ne parviens pas encore a me faire une idée claire pour aborder la chose

    J'ai aussi trouvé ceci qui semble faire une synthese des deux autres post
    Synthese

    Je vais continuer à lire et relire, mais si quelqu'un a quelques suggestions ou explications sur le sujet, elles sont bienvenue !

    Merci de 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 : 43
    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,

    Cela dépend surtout de ce que vous souhaitez consommer au niveau applicatif : si vous avez simplement besoin de savoir qu'une table a été touchée par une instruction DML, ou si vous avez besoin des données qui été modifiées. Peut-être aussi que seule la dernière modification pour une valeur de clé unique particulière est intéressante, ou que vous avez besoin de la liste de toutes les modifications ...

    @++

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour Elsuket

    Dans ce cas ci et dans la majorité des cas le simple fait de savoir qu'un record a été inséré, modifié ou effacé suffit !
    Meme pas besoin de savoir lequel

    Il s'agit pour une application de charger des tables de travail relativement stables (pas de modification quotidienne)
    Mais d'etre le cas échéant prevenu qu'un reload est nécessaire
    Le cas échéant un reload complet est prévu

  4. #4
    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 : 43
    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
    Dans ce cas les notifications d'événement pourraient convenir, mais cette fonctionnalité est dépréciée et plutôt lourde à coder et à maintenir.

    Le déclencheur DML aurait convenu, mais il va ralentir l'exécution du chargement de données, surtout s'il est volumineux.

    Ne vous est-il pas possible de faire faire ce type de travail à l'application qui charge les données ? Par exemple, on lui ferait écrire que les tables ont été chargées avec succès dans une petite table utilitaire, et les interfaces client vérifient régulièrement le contenu de cette table.

    @++

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Citation Envoyé par Elsuket
    Par exemple, on lui ferait écrire que les tables ont été chargées avec succès dans une petite table utilitaire, et les interfaces client vérifient régulièrement le contenu de cette table
    Tout a fait !
    Merci Elsuket c'est la premiere idée que j'avais eue mais comme j'avais vu que SQL Server permettait de gerer les Event j'ai voulu investiguer cela

    Mais tu confirme mon sentiment que ca semble d'une part asser lourd a mettre en oeuvre et sans doute asser gourmand en ressources aussi

    Comme l'application d'administration des données passe par des classe d'acces dédié je peux facilement intervenir a ce niveau pour updater une petite table sémaphore
    Ou mieux encore, je peux ecrire un trigger qui ecrira dans cette table sémaphore

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    En l’occurrence, le service broker, qui est asynchrone, pourrait aussi être une solution a explorer...

  7. #7
    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 : 43
    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
    Citation Envoyé par olibara
    Comme l'application d'administration des données passe par des classe d'acces dédié je peux facilement intervenir a ce niveau pour updater une petite table sémaphore
    Ou mieux encore, je peux ecrire un trigger qui ecrira dans cette table sémaphore
    Oui. En revanche comme je le disais, gare au trigger qui peut augmenter la durée des transactions de chargement de données

    Citation Envoyé par aieeeuuuuu
    En l’occurrence, le service broker, qui est asynchrone, pourrait aussi être une solution a explorer...
    Tout à fait, d'ailleurs les notifications d'événement reposent sur Service Broker. Mais comme je le disais, cela me semble relativement lourd simplement pour "détecter" qu'une table a été chargée. Qu'en penses-tu ?

    @++

  8. #8
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Qu'en penses-tu ?
    Oh, je n'en pense rien, C'était juste pour faire avancer le schmilblick

    Je proposais juste cette alternative parce qu’elle a l'avantage d’être asynchrone.

    Mais je pense qu'une table outil telle que tu la décrit peut très bien faire l'affaire. D'autres solutions pourraient être aussi envisagées, mais tout dépend des besoins d'Olibara, du contexte,...

    1/ Combien de clients connectés qui vont venir vérifier régulièrement si des nouvelle données sont dispo ?
    2/ A quelle fréquence (et donc quelle latence maximale souhaitée dans la mise à jour des données dans l'application) ?
    ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trigger delete sur une table réflexive
    Par oxino dans le forum PL/SQL
    Réponses: 4
    Dernier message: 29/06/2010, 11h17
  2. Réponses: 4
    Dernier message: 09/10/2009, 16h54
  3. [Droits] INSERT et SELECT sur une table temporaire
    Par Bisûnûrs dans le forum Administration
    Réponses: 2
    Dernier message: 19/06/2008, 08h01
  4. [HQL] Update HQL sur une table avec Id composite
    Par Eccoon dans le forum Hibernate
    Réponses: 5
    Dernier message: 02/04/2007, 12h10
  5. probleme de delete sur une table avec somation
    Par galaad666 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/10/2006, 16h44

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