Bạn đang cố gắng loại bỏ trình kích hoạt đăng nhập trong SQL Server, nhưng bạn gặp phải lỗi như sau?
“Không thể thả trình kích hoạt‘ trigger_name ’vì nó không tồn tại hoặc bạn không có quyền.”
Có thể là do bạn thiếu ON ALL SERVER
đối số.
Khi bạn tạo trình kích hoạt đăng nhập, bạn sử dụng ON ALL SERVER
lý lẽ.
Bạn cũng có thể sử dụng đối số này với các trình kích hoạt DDL. Đối số này áp dụng phạm vi của trình kích hoạt cho máy chủ hiện tại.
Khi bạn thả các trình kích hoạt như vậy (tức là trình kích hoạt đăng nhập và trình kích hoạt DDL được tạo bằng ON ALL SERVER
), bạn cũng phải sử dụng ON ALL SERVER
.
Ví dụ về lỗi
Gần đây tôi đã tự mình mắc phải sai lầm này. Trong trường hợp của tôi, tôi đang cố gắng thả một trình kích hoạt đăng nhập như thế này:
DROP TRIGGER trg_limit_concurrent_sessions;
Nhưng điều đó đã dẫn đến lỗi sau:
Cannot drop the trigger 'trg_limit_concurrent_sessions', because it does not exist or you do not have permission.
Tôi bối rối, vì tôi là người tạo ra ngòi nổ. Trên thực tế, tôi đã tạo nó sớm hơn trong cùng một phiên!
Nhưng sau đó tôi nhận ra sai lầm của mình.
Giải pháp
Giải pháp thật dễ dàng - chỉ cần thêm ON ALL SERVER
vào mã của tôi.
DROP TRIGGER trg_limit_concurrent_sessions ON ALL SERVER;
Kết quả:
Commands completed successfully.
Tôi hy vọng bài viết này hữu ích nếu bạn gặp phải lỗi tương tự.