Apakah Anda mencoba melepaskan pemicu masuk di SQL Server, tetapi Anda mendapatkan kesalahan seperti berikut?
“Tidak dapat melepaskan pemicu ‘trigger_name’, karena tidak ada atau Anda tidak memiliki izin.”
Bisa jadi karena Anda melewatkan ON ALL SERVER
argumen.
Saat Anda membuat pemicu masuk, Anda menggunakan ON ALL SERVER
argumen.
Anda juga dapat menggunakan argumen ini dengan pemicu DDL. Argumen ini menerapkan cakupan pemicu ke server saat ini.
Saat Anda menghapus pemicu tersebut (yaitu pemicu masuk, dan pemicu DDL yang dibuat dengan ON ALL SERVER
), Anda juga harus menggunakan ON ALL SERVER
.
Contoh Kesalahan
Saya sendiri baru-baru ini melakukan kesalahan ini. Dalam kasus saya, saya mencoba melepaskan pemicu masuk seperti ini:
DROP TRIGGER trg_limit_concurrent_sessions;
Tapi itu menghasilkan kesalahan berikut:
Cannot drop the trigger 'trg_limit_concurrent_sessions', because it does not exist or you do not have permission.
Saya bingung, karena sayalah yang menciptakan pemicunya. Sebenarnya, saya telah membuatnya lebih awal di sesi yang sama!
Tapi kemudian saya menyadari kesalahan saya.
Solusinya
Solusinya mudah – cukup tambahkan ON ALL SERVER
ke kode saya.
DROP TRIGGER trg_limit_concurrent_sessions ON ALL SERVER;
Hasil:
Commands completed successfully.
Saya harap artikel ini membantu jika Anda mengalami kesalahan yang sama.