Création de Trigger de logon

Résolu
cs_Tippex_66 Messages postés 2 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 3 juin 2010 - 29 mai 2010 à 11:35
cs_Tippex_66 Messages postés 2 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 3 juin 2010 - 3 juin 2010 à 08:20
Alors voilà mon problème. Je suis actuellement en train de monter un projet de groupe pour lequel j'utilise SQL Server. Pour les besoins de ce projet, il faut que à la connexion d'un utilisateur, je récupère son SPID (id du processus sur le serveur le concernant), pour le stocker dans une table. Or j'ai beau essayer, à chaque fois que je crée un trigger pour faire ce genre de choses, les connexions à mon server deviennent impossible (en raison de l'exécution du trigger ).

Après de multiples recherches sur la toile, je tombe sur de nombreux exemples qui montrent comment refuser des connexions grace à un trigger. Ca pas de soucis, je maitrise . Mais impossible de trouver un seul exemple où l'on autorise explicitement un utilisateur à se connecter. Même en essayant des codes qui par exemple refusent une connexion après 3 tentatives, ça ne marche pas .

Voila tout de même le trigger que j'essaye de mettre en place :
CREATE TRIGGER TRIG_LOGON
ON ALL SERVER
FOR LOGON
AS
BEGIN
DELETE FROM [maBase].[monSchema].[connected_users] WHERE spid = @@SPID
INSERT INTO [maBase].[monSchema].[connected_users] VALUES (@@SPID, NULL)
END;


Après ce long roman, ma question, ou plutôt mes questions sont :
Comment créer un simple trigger qui autorise la connexion, même un trigger qui ne fait strictement rien, mais qui n'empeche pas la connexion d'un utilisateur ?

Comment faire pour que le trigger que j'essaye de créer puisse fonctionner ?


Merci à tous !

2 réponses

cs_Tippex_66 Messages postés 2 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 3 juin 2010
3 juin 2010 à 08:20
Oui désolé, j'ai oublié de venir partager ma solution ici, qui a en fait évolué. Merci pour le rappel.
En fait la solution que j'ai posté ailleurs, ne me convenait qu'a moitié, mais entre temps, j'ai trouvé ce qu'il me fallait.
Pour la petite histoire, la date du post de ma solution est antérieure à mon post ici, car je ne pouvais pas poster un nouveau message sur le forum, j'ai donc édité mon dernier message.


Concernant ma solution. J'ai trouvé que le trigger n'arrivait pas a insérer des données dans une bdd autre que la base master. J'ai donc dans un premier temps créé une table sur la base master dans laquelle je faisais l'insertion qu'il me fallait. Cependant, cela me causait énormément de soucis au niveau de la gestion des droits et cie sur les utilisateurs. J'ai donc finalement trouvé la parade consistant à écrire une procédure stockée qui fait l'insertion dans la table que je veux. Depuis mon trigger je fais donc appel à cette procédure plutôt qu'à un INSERT classique.

J'ai un peu de mal à comprendre pourquoi l'INSERT dans la table ne fonctionne pas alors que l'EXEC qui fait ce même INSERT lui fonctionne. En tout cas ca marche \o/ .
3
cs_Tolliap Messages postés 60 Date d'inscription lundi 4 décembre 2006 Statut Membre Dernière intervention 11 janvier 2013
2 juin 2010 à 01:49
Bonjour,

Petite question, ce sujet est-il toujours d'actualité? car j'ai vu que tu as posé cette question sur d'autre forum, et que tu as dit avoir trouvé une réponse. Mais cette réponse à été écrite avant que tu poses la question ici???

Qui ne tente rien, n'a rien
0
Rejoignez-nous