Ver Mensaje Individual
  #14  
Antiguo 24-04-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
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.
Responder Con Cita