Pokoušíte se zrušit spouštěč přihlášení na serveru SQL Server, ale zobrazuje se vám následující chyba?
„Nelze zrušit spouštěč ‚trigger_name‘, protože neexistuje nebo nemáte oprávnění.“
Může to být tím, že vám chybí ON ALL SERVER
argument.
Když vytvoříte spouštěč přihlášení, použijete ON ALL SERVER
argument.
Tento argument můžete také použít se spouštěči DDL. Tento argument aplikuje rozsah spouštěče na aktuální server.
Když takové spouštěče zrušíte (tj. spouštěče přihlášení a spouštěče DDL, které byly vytvořeny pomocí ON ALL SERVER
), musíte také použít ON ALL SERVER
.
Příklad chyby
Sám jsem tuto chybu nedávno udělal. V mém případě jsem se pokoušel vypustit spouštěč přihlášení takto:
DROP TRIGGER trg_limit_concurrent_sessions;
To však vedlo k následující chybě:
Cannot drop the trigger 'trg_limit_concurrent_sessions', because it does not exist or you do not have permission.
Byl jsem zmatený, protože jsem to byl já, kdo vytvořil spoušť. Ve skutečnosti jsem to vytvořil dříve ve stejné relaci!
Ale pak jsem si uvědomil svou chybu.
Řešení
Řešení bylo snadné – jednoduše připojte ON ALL SERVER
na můj kód.
DROP TRIGGER trg_limit_concurrent_sessions ON ALL SERVER;
Výsledek:
Commands completed successfully.
Doufám, že vám tento článek pomohl, pokud jste narazili na stejnou chybu.