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 :

Possibilité de déclencher un appel distant auprès des autres connexions sql ?


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 202
    Points : 43
    Points
    43
    Par défaut Possibilité de déclencher un appel distant auprès des autres connexions sql ?
    Bonjour,

    J'ai une appli windows écrite en c# qui est lancée sur plusieurs postes et qui se connecte à une base sql.

    A un moment donné, j'aimerais qu'un utilisateur ait la certitude qu'il est le seul a avoir l'application de lancée (pour réaliser une tache d'administration un peu space).

    Existe t il un moyen de savoir qu'on est seul connecté à une base sql à un instant donné ?
    Existe t il un moyen ( a travers les procédures stockées ou autre), de déclencher l'appel d'une methode sur tous les postes connectés à la base ?

    D'avance Merci

    Pour info, j'ai déjà pensé à la technique qui consiste à faire écrire par l'appli un timestamp toutes les 10 secondes et de concidérer que l'appli n'est plus lancée si le timestamp est dépassé de plus de 10 secondes... (et ça me va pas!)

  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,

    Le plus simple pour gérer cela, c'est de créer un identification spécifique pour votre application, en gérant une date d'ouverture et une date de fermeture de session.
    Lorsque l'utilisateur ferme l'application, vous exécutez la procédure stockée de déconnexion qui va valuer la colonne de fin de session.
    Il devient alors très simple de savoir si l'application est la seule connectée à la base de données.

    Existe t il un moyen ( a travers les procédures stockées ou autre), de déclencher l'appel d'une méthode sur tous les postes connectés à la base ?
    A l'appel de la procédure stockée d'exécution de votre tache d'administration un peu space, vous pouvez valuer une colonne de type BIT (qui serait par défaut à 0) à 1.
    A intervalles réguliers, les applications requêtent cette colonne pour vérifier qu'elles peuvent effectuer toute opération.
    Si la colonne de type BIT est à 1, toute action de l'utilisateur lui retourne une MsgBox lui indiquant que la tache d'administration un peu space est en cours

    @++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 202
    Points : 43
    Points
    43
    Par défaut
    Votre solution implique une scrutation (avec le BIT) et ne me convient pas (en fait j'ai fait qqchose de similaire pour l'instant)

    Merci quand même

    A+

  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
    21 933
    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 933
    Points : 51 748
    Points
    51 748
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER DATABASE MaBase SET SINGLE USER WITH ...
    Au choix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ROLLBACK IMMEDIATE
    ROLLBACK AFTER ...
    NO WAIT
    A +

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 202
    Points : 43
    Points
    43
    Par défaut
    Merci mais je ne comprend pas vos derniers extraits de code

  6. #6
    Expert éminent sénior
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    L'idée de SQL Pro me parait pas mal pour ce que vous voulez faire

    ALTER DATABASE .. SET SINGLE USER .. WITH ROLLBACK .. vous permet d'annuler toute transaction en cours et de ne permettre qu'une seule connexion .. L'utilisateur qui a initié la commande restera le seul connecté ...

    Vous pouvez ainsi faire votre tâche d'administration en toute tranquillité (en passant j'aimerais bien savoir ce que vous faites comme tâche pour vouloir être le seul connecté à l'application .. curiosité ).

    Il ne vous restera plus qu'à repasser en mode MULTI USER pour reprendre le fonctionnement normal de votre application.

    ++

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 202
    Points : 43
    Points
    43
    Par défaut
    La tache d'admin que je fait c'est en fait une mise a jour automatique de l'appli (en incluant les fichiers de l'appli, exe ou autre).
    C'est pour cela que seul un user doit le faire a un moment donné car il y a des dossiers partagés pour tout le monde

Discussions similaires

  1. contrôle des appels distants GWT
    Par Wiliam_Walas dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 16/04/2008, 09h16
  2. [RPC] Appels distants : remplacer des objets COM
    Par pataguillon dans le forum C++
    Réponses: 26
    Dernier message: 30/03/2006, 10h17
  3. Echec d'un appel distant avec RPC
    Par hasan dans le forum MFC
    Réponses: 3
    Dernier message: 18/05/2005, 07h42
  4. [JNDI] Appel distant d'un EJB
    Par Righetto Dominique dans le forum Java EE
    Réponses: 4
    Dernier message: 27/01/2005, 18h05
  5. Réponses: 4
    Dernier message: 25/11/2004, 13h24

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