Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kesalahan "Tidak dapat melepaskan pemicu" saat Mencoba Menjatuhkan Pemicu Masuk? Coba ini.

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengembalikan beberapa set hasil dengan SqlCommand?

  2. Alias ​​referensi (dihitung dalam SELECT) dalam klausa WHERE

  3. Ekspresi Reguler MSSQL

  4. CHARINDEX() vs PATINDEX() di SQL Server – Apa Bedanya?

  5. Bagaimana cara menggunakan SqlCommand untuk MENCIPTAKAN DATABASE dengan nama db berparameter?