+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Expert éminent sénior

    Avatar de Francis Walter
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    2 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

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

    Informations forums :
    Inscription : février 2012
    Messages : 2 317
    Points : 26 487
    Points
    26 487

    Par défaut Notifier les changements d'une base de données SQL Server à son application .Net

    Bonsoir,

    Je vous présente un nouveau tutoriel : Comment notifier les changements d'une base de données SQL Server à son application .Net par Loick DESTIN de Soat.

    SQL Server est un système de gestion de base de données « Made In Microsoft » très complet qui offre l'accès à plusieurs services. Ceux qui vont nous intéresser ici, sont ceux qui vont permettre à notre base de données de notifier nos applications de ses changements.

    En effet, grâce à certains services dont on va parler dans cet article, il est possible d'envoyer des messages à nos applications, mais aussi de créer des requêtes de notification, on y reviendra plus tard. Commençons par le « Service Broker ».


    Retrouvez tous les meilleurs cours et tutoriels pour apprendre Microsoft SQL Server
    Vous avez envie de contribuer au sein du Club Developpez.com ?

    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, ...etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Singapour

    Informations forums :
    Inscription : octobre 2005
    Messages : 2 785
    Points : 9 556
    Points
    9 556

    Par défaut

    J'ai essayé la technique décrite dans cet article (notifications SQL Server) il y a pas mal d'années (fin 2006) sous SQL Server 2005.

    L'environnement en question nous a permis de voir comment l'outil se comporte sous la charge (données qui changent très souvent, nombre d'applications clientes qui est rapidement passé de 2 à une petite dizaine...).

    ---

    Nous avons été confrontés à un certains nombre de problèmes :

    - une fois que l'événement OnChange est levé, il est nécessaire de se réabonner. Le problème, c'est que si l'abonnement échoue pour une raison ou une autre (ex.: base surchargée) et qu'on ne le détecte pas correctement, alors on perd toute notification, plus rien n'est mis à jour et on ne s'en rend pas forcément compte tout de suite

    - plus embêtant : dans certains cas (je n'ai pas pu vérifier mais je pense que ça arrive quand on perd la communication client-serveur ou quand le client crash, et donc on n'a pas pu appeler à la méthode SqlDependency.Stop() correctement), on se retrouve avec des transactions en suspens, ce qui n'est pas bon du tout. Ça a posé tout un tas de problèmes au niveau de la maintenance de la base (backups qui échouent, fichiers de log transactionnels extrêmement volumineux...)


    Vu les problèmes recontrés, nous avons préféré faire machine arrière et trouver d'autres solutions (même un simple pooling de base, ça posait moins de problèmes !)

    ---

    J'avais bien pensé à écrire un article dessus à l'époque (vers 2007), mais j'ai préféré m'abstenir.

    À mon sens, cet outil n'est pas à mettre entre toutes les mains :

    - il est très facile de se retrouver avec des cas à problèmes (mécanisme de notification qui s'arrête subitement, transactions qui restent en suspens suite à un dysfonctionnement logiciel...)

    - si on est capable d'implémenter les notifications correctement, alors on est tout aussi capable de trouver d'autres solutions beaucoup plus sures (ex: notifications gérées au niveau du logiciel et non pas par la base elle-même)


    Ce qu'il faut retenir : il ne faut pas multiplier les notifications SQL à outrance, car au-delà d'une certaine charge ça devient vite dangereux. Votre DBA vous dira merci.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    novembre 2004
    Messages
    1 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 759
    Points : 3 058
    Points
    3 058

    Par défaut

    Assez daccord avec Pierre, j'ai personnellement ré implémenté pour mes développeurs un système de notification perso inspiré de SQlCacheDependency...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  4. #4
    Membre éprouvé
    Avatar de landry161
    Homme Profil pro
    C#,PHP,MySQL,Android...
    Inscrit en
    juillet 2010
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : C#,PHP,MySQL,Android...

    Informations forums :
    Inscription : juillet 2010
    Messages : 407
    Points : 1 014
    Points
    1 014
    Billets dans le blog
    1

    Par défaut

    Très bon tutoriel

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/01/2012, 18h08
  2. Réponses: 1
    Dernier message: 18/09/2011, 01h55
  3. Réponses: 3
    Dernier message: 28/01/2010, 14h22
  4. Réponses: 3
    Dernier message: 01/09/2005, 16h24
  5. Réponses: 3
    Dernier message: 29/03/2004, 18h02

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