2011-01-20 2 views
1

Je souhaite utiliser un déclencheur lorsqu'une session est arrêtée/terminée. C'est possible?Déclencheur pour les sessions supprimées

Mon programme connecte une table et met à jour le champ "en ligne" lorsqu'il est en ligne. Si mon programme est écrasé ou ma connexion MSSQL tué, je veux mettre à jour champ « en ligne » ...

Par exemple: Quand mon programme est en ligne, il obtient SPID et mise à jour SERVICE_TABLE (SPID, en ligne)

SEVICE_TABLE 
------------ 
id 
spid 
online 

lorsqu'une session est arrêtée/terminée, le déclencheur recherche SERVICE_TABLE. Est tué spid dans SERVICE_TABLE, mettez à jour le champ "en ligne" à false.

+0

non ............. –

+0

oh :(pouvez-vous offrir une solution? – ogun

+0

si vous décrivez le problème que vous pensez que ce design vous aidera à résoudre, nous pouvons –

Répondre

1

Il n'y a pas de déclencheurs de déconnexion DDL dans SQL Server (bien qu'il y ait ceux de connexion). Service Broker peut être utilisé pour traiter les événements AUDIT_LOGOUT cependant.

Does this help?

+0

merci Martin, je pense que le courtier de service peut résoudre mon problème ... – ogun

2

Nous avons une situation similaire. J'ai fondamentalement ajouté un "Lastseen" à notre équivalent de la table de service. Un processus d'arrière-plan dans le client met à jour ce champ toutes les minutes. (Assurez-vous de créer une nouvelle connexion à la base de données chaque fois que vous mettez à jour le champ.)

Si le champ "Lastseen" est plus de 5 minutes dans le passé, nous supposons que l'application est passée par le Hindenburg.

+0

Ceci est une bonne idée Andomar et il est facile à mettre en œuvre ... merci ... – ogun

+0

+1 pour "allé le chemin de l'Hindenburg. " –

Questions connexes