Опитвате ли се да премахнете тригер за влизане в SQL Server, но получавате грешка като следната?
„Не може да се премахне тригера „trigger_name“, защото не съществува или нямате разрешение.“
Може да се дължи на това, че ви липсва ON ALL SERVER
аргумент.
Когато създавате тригер за влизане, използвате ON ALL SERVER
аргумент.
Можете също да използвате този аргумент с DDL тригери. Този аргумент прилага обхвата на тригера към текущия сървър.
Когато пуснете такива задействания (т.е. тригери за влизане и DDL тригери, които са създадени с ON ALL SERVER
), трябва също да използвате ON ALL SERVER
.
Пример за грешката
Самият аз наскоро направих тази грешка. В моя случай се опитвах да пусна тригер за влизане по този начин:
DROP TRIGGER trg_limit_concurrent_sessions;
Но това доведе до следната грешка:
Cannot drop the trigger 'trg_limit_concurrent_sessions', because it does not exist or you do not have permission.
Бях объркан, защото аз бях този, който създаде спусъка. Всъщност го създадох по-рано в същата сесия!
Но тогава осъзнах грешката си.
Решението
Решението беше лесно – просто добавете ON ALL SERVER
към моя код.
DROP TRIGGER trg_limit_concurrent_sessions ON ALL SERVER;
Резултат:
Commands completed successfully.
Надявам се тази статия да ви е помогнала, ако сте срещнали същата грешка.