Bonjour a tous,
Quelle est la méthode a suivre pour avoir la liste des utilisateurs connectés a un serveur Firebird 2.1 avec les composants UIB ?
Merci.
Bonjour a tous,
Quelle est la méthode a suivre pour avoir la liste des utilisateurs connectés a un serveur Firebird 2.1 avec les composants UIB ?
Merci.
pourquoi ne pas simplement interroger la table MON$ATTACHEMENTS ?
Quelque chose comme
voir notes de release ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT DISTINCT MON$USER FROM MON$ATTACHEMENTS ou mieux SELECT DISTINCT MON$USER,MON$REMOTE_ADDRESS FROM MON$ATTACHEMENTS
Parceque ladites release notes disent ceci :
Et moi je voulais que tous les utilisateurs puissent avoir cette fameuse liste.Scope and Security
- Access to the monitoring tables is available in both DSQL and PSQL.
- Complete database monitoring is available to SYSDBA and the database owner.
- Regular users are restricted to the information about their own attachments only—other attachments are invisible to them.
Merci.
Effectivement, mais comme tu passes par les UIB qu'est ce qui t'empêche de faire une connexion "cachée" dans ton programme comme SYSDBA ou comme propriétaire ?
C'est ce que j'ai utilisé jusqu'a maintenant, mais j'ai découvert que le composant TJvUIBDataBase a une propriété "InfoUserNames" qui peut lister les utilisateurs connectés mais je n'ai aucune idée de la méthode a suivre pour cela.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /* Number of users currently attached to the database. Use this property with the "OnInfoUserNames" event to retrieve the user names.*/ property InfoUserNames: Integer index isc_info_user_names read GetInfoStringCount;
je ne crois pas que ce soit les utilisateurs connectés mais comme pour FIBplus les utilisateurs déclarés. Pour FibPlus c'est marrant , je viens de répondre à cette question ici cela peut peut-être donner une piste , j'ai l'impression que toutes ces biblios de connexion utilisent la même librairie C de base
bien sûr que tout le monde utilise la même API
mais la question aura plus sa place sur un Forum Delphi ou UIB
finalement c'est simple
j'ai posé 1 UIBDataBase + 1 TMemo
l'astuce comme indiqué dans le commentaire , quoique pas forcément explicite, déclarer l'événement OnInfoUserNames (en fait c'est à l'intérieur que l'on traite l'information reçue)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure TForm7.FormCreate(Sender: TObject); begin UIBDataBase1.Connected:=True; UIBDataBase1.InfoUserNames; end; procedure TForm7.UIBDataBase1InfoUserNames(Sender: TObject; Value: string); begin Memo1.Lines.Add(Value); end;
Bravo !
Mais malheureusement cette méthode a le même résultat que :seul le propiétaire de la base a la liste complète des utilisateurs connectés, dommage...
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT DISTINCT MON$USER FROM MON$ATTACHEMENTS
Merci pour l'effort.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager