Czy próbujesz opuścić wyzwalacz logowania w SQL Server, ale pojawia się błąd podobny do poniższego?
„Nie można usunąć wyzwalacza »nazwa_wyzwalacza«, ponieważ nie istnieje lub nie masz uprawnień”.
Może to być spowodowane brakiem ON ALL SERVER
argument.
Tworząc wyzwalacz logowania, użyj ON ALL SERVER
argument.
Możesz również użyć tego argumentu z wyzwalaczami DDL. Ten argument stosuje zakres wyzwalacza do bieżącego serwera.
Kiedy usuniesz takie wyzwalacze (tj. wyzwalacze logowania i wyzwalacze DDL, które zostały utworzone za pomocą ON ALL SERVER
), musisz również użyć ON ALL SERVER
.
Przykład błędu
Ostatnio sam popełniłem ten błąd. W moim przypadku próbowałem zrezygnować z wyzwalacza logowania w następujący sposób:
DROP TRIGGER trg_limit_concurrent_sessions;
Ale to spowodowało następujący błąd:
Cannot drop the trigger 'trg_limit_concurrent_sessions', because it does not exist or you do not have permission.
Byłem zdezorientowany, ponieważ to ja stworzyłem spust. W rzeczywistości stworzyłem go wcześniej w tej samej sesji!
Ale potem zdałem sobie sprawę z mojego błędu.
Rozwiązanie
Rozwiązanie było proste – po prostu dodaj ON ALL SERVER
do mojego kodu.
DROP TRIGGER trg_limit_concurrent_sessions ON ALL SERVER;
Wynik:
Commands completed successfully.
Mam nadzieję, że ten artykuł pomógł, jeśli napotkałeś ten sam błąd.