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

Dotnet Discussion :

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


Sujet :

Dotnet

  1. #1
    Expert éminent sénior

    Avatar de Francis Walter
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    2 315
    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 315
    Points : 26 889
    Points
    26 889
    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

  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 : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    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.

  3. #3
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 795
    Points : 3 173
    Points
    3 173
    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...

  4. #4
    Membre éprouvé
    Avatar de landry161
    Homme Profil pro
    C#,PHP,MySQL,Android...
    Inscrit en
    Juillet 2010
    Messages
    423
    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 : 423
    Points : 1 060
    Points
    1 060
    Billets dans le blog
    1
    Par défaut
    Très bon tutoriel

Discussions similaires

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

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