Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Błąd „Nie można opuścić wyzwalacza” podczas próby opuszczenia wyzwalacza logowania? Spróbuj tego.

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz 10 najlepszych rekordów dla każdej kategorii

  2. Zmień domyślny język logowania w SQL Server

  3. Omówienie wąskich gardeł w wydajności SQL Server

  4. Konfigurowanie grup dostępności AlwaysOn — część 2

  5. Jak działa funkcja SOUNDEX() serwera SQL?