Utiliser les MON$ATTACHMENTS pour fermer les connexions

Les tables de surveillance sont en lecture seule, mais le serveur dispose d'un mécanisme intégré pour supprimer (et uniquement supprimer) les enregistrements de la table MON$ATTACHMENTS, ce qui vous permet de fermer la connexion à la base de données.

Note
  • Toute activité en cours sur la connexion supprimée est immédiatement arrêtée et toutes les transactions actives sont annulées (les déclencheurs des événements "ON DISCONNECT" et "ON TRANSACTION ROLLBACK" ne sont pas appelés) ;

  • Une connexion fermée renverra un code d'erreur isc_att_shutdown à l'application ;

  • Les tentatives ultérieures d'utilisation de cette connexion (c'est-à-dire l'utilisation de son handle dans les appels API) renverront des erreurs ;

  • La fin des connexions système (MON$SYSTEM_FLAG = 1) n'est pas possible. Le serveur ignore les connexions système affectées par l'instruction DELETE FROM MON$ATTACHMENTS.

Example 1. Déconnecter toutes les connexions sauf la vôtre
DELETE FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION