sql >> Database teknologi >  >> RDS >> Sqlserver

"Kan ikke slippe triggeren"-fejl, når du forsøger at slippe en logon-trigger? Prøv dette.

Forsøger du at slippe en logon-trigger i SQL Server, men får du en fejl som følgende?

"Kan ikke slippe triggeren 'trigger_name', fordi den ikke eksisterer, eller du ikke har tilladelse."

Det kan være, fordi du mangler ON ALL SERVER argument.

Når du opretter en logon-trigger, bruger du ON ALL SERVER argument.

Du kan også bruge dette argument med DDL-udløsere. Dette argument anvender udløserens omfang på den aktuelle server.

Når du slipper sådanne triggere (dvs. logon-triggere og DDL-triggere, der blev oprettet med ON ALL SERVER ), skal du også bruge ON ALL SERVER .

Eksempel på fejlen

Jeg begik for nylig denne fejl selv. I mit tilfælde forsøgte jeg at slippe en logon-trigger som denne:

DROP TRIGGER trg_limit_concurrent_sessions;

Men det resulterede i følgende fejl:

Cannot drop the trigger 'trg_limit_concurrent_sessions', because it does not exist or you do not have permission.

Jeg var forvirret, for det var mig, der skabte udløseren. Faktisk havde jeg oprettet det tidligere i samme session!

Men så indså jeg min fejl.

Løsningen

Løsningen var nem – blot tilføje ON ALL SERVER til min kode.

DROP TRIGGER trg_limit_concurrent_sessions ON ALL SERVER;

Resultat:

Commands completed successfully.

Jeg håber, at denne artikel har hjulpet, hvis du er stødt på den samme fejl.


  1. Sådan fjerner du efterfølgende hvidt mellemrum i MySQL

  2. Nye funktioner i SQL Server 2017 (Database Engine)

  3. Find alle ikke-numeriske værdier i en kolonne i MariaDB

  4. Forbinder postgresql med sqlalchemy