Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fehler „Trigger kann nicht gelöscht werden“ beim Versuch, einen Logon-Trigger zu löschen? Versuche dies.

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.