Efectivamente el problema es el que señala Casimiro: SQL Manager abre una coexión para cada elemento que se trata de consultar y de ahí viene el error. He modificado el trigger de conexión dejándolo de esta manera:
Código:
CREATE TRIGGER CONECTADO
ACTIVE ON
CONNECT
POSITION 0
AS
BEGIN
DELETE FROM Conexion
WHERE Id_Servidor NOT IN (SELECT MON$ATTACHMENT_ID FROM MON$ATTACHMENTS);
IF (CURRENT_USER IN (SELECT Nombre FROM Conexion)) THEN
EXCEPTION Usuario_conectado;
IF (CURRENT_USER <> 'SYSDBA') THEN
INSERT INTO Conexion (Id_Servidor, Nombre, Hora)
VALUES (CURRENT_CONNECTION, CURRENT_USER, CURRENT_TIMESTAMP);
END
De esta forma, además de verificar si un usuario ya está conectado y sacar el correspondiente mensaje de error, siempre queda liberado el usuario SYSDBA por si hay que intervenir de forma inesperada en la base de datos con alguna herramienta externa. Muchas gracias todos por vuestra ayuda, ha sido inestimable.