Versuchen Sie, einen Anmelde-Trigger in SQL Server zu löschen, erhalten aber eine Fehlermeldung wie die folgende?
„Der Trigger ‚trigger_name‘ kann nicht gelöscht werden, da er nicht existiert oder Sie keine Berechtigung haben.“
Es könnte daran liegen, dass Ihnen der ON ALL SERVER
fehlt Argument.
Wenn Sie einen Anmeldeauslöser erstellen, verwenden Sie den ON ALL SERVER
Streit.
Sie können dieses Argument auch mit DDL-Triggern verwenden. Dieses Argument wendet den Geltungsbereich des Triggers auf den aktuellen Server an.
Wenn Sie solche Trigger löschen (d. h. Anmelde-Trigger und DDL-Trigger, die mit ON ALL SERVER
erstellt wurden ), müssen Sie auch ON ALL SERVER
verwenden .
Beispiel für den Fehler
Diesen Fehler habe ich kürzlich selbst gemacht. In meinem Fall habe ich versucht, einen Anmeldeauslöser wie diesen zu löschen:
DROP TRIGGER trg_limit_concurrent_sessions;
Aber das führte zu folgendem Fehler:
Cannot drop the trigger 'trg_limit_concurrent_sessions', because it does not exist or you do not have permission.
Ich war verwirrt, weil ich derjenige war, der den Auslöser geschaffen hat. Tatsächlich hatte ich es früher in derselben Sitzung erstellt!
Aber dann erkannte ich meinen Fehler.
Die Lösung
Die Lösung war einfach – einfach ON ALL SERVER
anhängen zu meinem Code.
DROP TRIGGER trg_limit_concurrent_sessions ON ALL SERVER;
Ergebnis:
Commands completed successfully.
Ich hoffe, dieser Artikel hat Ihnen geholfen, falls Sie auf denselben Fehler gestoßen sind.