Försöker du släppa en inloggningstrigger i SQL Server, men du får ett felmeddelande som följande?
"Kan inte släppa triggern 'trigger_name', eftersom den inte finns eller så har du inte behörighet."
Det kan bero på att du saknar ON ALL SERVER
argument.
När du skapar en inloggningsutlösare använder du ON ALL SERVER
argument.
Du kan också använda detta argument med DDL-utlösare. Detta argument tillämpar utlösarens omfattning på den aktuella servern.
När du släpper sådana triggers (d.v.s. inloggningsutlösare och DDL-utlösare som skapades med ON ALL SERVER
), måste du också använda ON ALL SERVER
.
Exempel på felet
Jag gjorde nyligen detta misstag själv. I mitt fall försökte jag släppa en inloggningsutlösare så här:
DROP TRIGGER trg_limit_concurrent_sessions;
Men det resulterade i följande fel:
Cannot drop the trigger 'trg_limit_concurrent_sessions', because it does not exist or you do not have permission.
Jag var förvirrad, för det var jag som skapade triggern. Faktum är att jag skapade det tidigare i samma session!
Men sedan insåg jag mitt misstag.
Lösningen
Lösningen var enkel – lägg bara till ON ALL SERVER
till min kod.
DROP TRIGGER trg_limit_concurrent_sessions ON ALL SERVER;
Resultat:
Commands completed successfully.
Jag hoppas att den här artikeln har hjälpt om du har stött på samma fel.