Tôi cần một cách để kiểm tra khi ai đó cố gắng BẬT hoặc BẬT một trình kích hoạt trong cơ sở dữ liệu của chúng tôi. Giải pháp thay thế DDL kích hoạt hoạt động tuyệt vời nhưng chỉ trong các điều kiện để khi người dùng sử dụngKiểm tra các trình kích hoạt DISABLE/ENABLE IN SQL
ALTER TABLE <tableName> ENABLE TRIGGER <triggerName>
HOẶC
ALTER TABLE <tableName> DISABLE TRIGGER <triggerName>
tuyên bố. Từ những gì tôi đã xác định, phương pháp DDL làm cho vô dụng nếu người dùng thực hiện các báo cáo sau đó bỏ qua lệnh ALTER:
DISABLE TRIGGER <triggerName> ON <tableName>
ENABLE TRIGGER <triggerName> ON <tableName>
Tôi đã có một vài suy nghĩ về chụp những sự kiện không ai trong số họ làm việc. Một trong số đó là nếu tôi có thể truy cập vào bảng bên dưới chế độ xem sys.triggers, tôi có thể đặt trình kích hoạt chèn/cập nhật trên bảng đó và lọc tên trình kích hoạt để có được kiểm toán; nhưng sự nghi ngờ của tôi là nó có thể sẽ dẫn đến một sự đệ quy vô hạn ngay cả khi nó có thể làm được.
Có ai ở đây có bất kỳ đề xuất nào có thể cho các giải pháp thay thế cho vấn đề này không? Tôi không hiểu tại sao MS sẽ cho phép các phiên bản nâng cao của báo cáo để thoát khỏi phạm vi kiểm toán. Đó là, kiểm toán từ các phương pháp đơn giản nhất; bằng cách sử dụng SQL profiler có vẻ là chi phí không cần thiết cho việc này.
Wow - bạn đang nói rằng cú pháp ENABLE TRIGGER ... ON ... bỏ qua SQL 2008 DDL Audit? http://msdn.microsoft.com/en-us/library/dd392015(v=sql.100).aspx – StuartLC
Chỉ các trình kích hoạt DML có lẽ là nếu ai đó có thể vô hiệu hóa trình kích hoạt DDL, chúng cũng có thể vô hiệu hóa trình kích hoạt kiểm tra của bạn? Điều này được ghi lại trong dấu vết mặc định mà tôi nghĩ. –
Có, nếu ai đó vô hiệu hóa trình kích hoạt DML của tôi bằng cú pháp DISABLE TRIGGER ON thì tôi sẽ không có cách nào để nắm bắt sự kiện đó qua trình kích hoạt DDL. –
Mark