¿Está intentando colocar un activador de inicio de sesión en SQL Server, pero recibe un error como el siguiente?
"No se puede soltar el disparador 'trigger_name' porque no existe o no tienes permiso".
Podría ser porque te falta ON ALL SERVER
argumento.
Cuando crea un disparador de inicio de sesión, usa el ON ALL SERVER
argumento.
También puede usar este argumento con disparadores DDL. Este argumento aplica el alcance del disparador al servidor actual.
Cuando elimina dichos disparadores (es decir, disparadores de inicio de sesión y disparadores DDL que se crearon con ON ALL SERVER
), también debe usar ON ALL SERVER
.
Ejemplo del error
Recientemente cometí este error yo mismo. En mi caso, estaba tratando de soltar un activador de inicio de sesión como este:
DROP TRIGGER trg_limit_concurrent_sessions;
Pero eso resultó en el siguiente error:
Cannot drop the trigger 'trg_limit_concurrent_sessions', because it does not exist or you do not have permission.
Estaba confundido, porque fui yo quien creó el gatillo. De hecho, ¡lo había creado antes en la misma sesión!
Pero luego me di cuenta de mi error.
La solución
La solución fue fácil:simplemente agregue ON ALL SERVER
a mi código.
DROP TRIGGER trg_limit_concurrent_sessions ON ALL SERVER;
Resultado:
Commands completed successfully.
Espero que este artículo te haya ayudado si te has encontrado con el mismo error.