Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro "Não é possível descartar o gatilho" ao tentar descartar um gatilho de logon? Tente isso.


Você está tentando descartar um gatilho de logon no SQL Server, mas está recebendo um erro como o seguinte?

“Não é possível soltar o gatilho ‘trigger_name’, porque ele não existe ou você não tem permissão.”

Pode ser porque você está perdendo o ON ALL SERVER argumento.

Ao criar um gatilho de logon, você usa o ON ALL SERVER argumento.

Você também pode usar esse argumento com gatilhos DDL. Este argumento aplica o escopo do gatilho ao servidor atual.

Quando você descarta esses gatilhos (ou seja, gatilhos de logon e gatilhos DDL que foram criados com ON ALL SERVER ), você também deve usar ON ALL SERVER .

Exemplo do erro


Recentemente, eu mesmo cometi esse erro. No meu caso, eu estava tentando soltar um gatilho de logon assim:
DROP TRIGGER trg_limit_concurrent_sessions;

Mas isso resultou no seguinte erro:
Cannot drop the trigger 'trg_limit_concurrent_sessions', because it does not exist or you do not have permission.

Fiquei confuso, porque fui eu quem criou o gatilho. Na verdade, eu o criei mais cedo na mesma sessão!

Mas então percebi meu erro.

A solução


A solução foi fácil - basta anexar ON ALL SERVER ao meu código.
DROP TRIGGER trg_limit_concurrent_sessions ON ALL SERVER;

Resultado:
Commands completed successfully.

Espero que este artigo tenha ajudado se você encontrou o mesmo erro.