SQL Server không theo dõi thông tin này (tôi dự kiến sẽ thấy nó trong theo dõi mặc định, nhưng nó cũng không có ở đó). Bật / tắt sẽ cập nhật redirect_date, nhưng bạn sẽ không thể phân biệt điều đó với việc đổi tên hoặc sửa đổi mã. Ngoài ra, nó sẽ chỉ hiển thị cho bạn khi thay đổi cuối cùng diễn ra. Nếu bạn muốn bất kỳ theo dõi nào khác (chẳng hạn như ai đã thực hiện), bạn sẽ cần thực hiện kiểm toán hoặc theo dõi. Tôi nghĩ có lẽ cũng có thể sử dụng trình kích hoạt DDL, nhưng điều này có vẻ như là một lỗ hổng chức năng có chủ ý:
http://connect.microsoft.com/QueryServer/feedback/details/509242/fire-a-ddl-trigger-when-the-new-syntax-disable-trigger-is-executed
https://connect.microsoft.com/QueryServer/feedback/details/434951/ddl-trigger-still-not-usiness-disable-trigger-is-this-not-an-event
Đây là cách bạn có thể nắm bắt thông tin này trong tương lai bằng cách sử dụng kiểm toán:
USE master;
GO
CREATE SERVER AUDIT MyAudit
TO FILE (FILEPATH = 'C:\temp\', MAXSIZE = 1 GB)
WITH (ON_FAILURE = CONTINUE);
GO
ALTER SERVER AUDIT MyAudit WITH (STATE = ON);
GO
USE [your_database];
GO
CREATE DATABASE AUDIT SPECIFICATION schema_db_change
FOR SERVER AUDIT MyAudit
ADD (SCHEMA_OBJECT_CHANGE_GROUP),
ADD (DATABASE_OBJECT_CHANGE_GROUP);
ALTER DATABASE AUDIT SPECIFICATION schema_db_change WITH (STATE = ON);
GO
Bây giờ đi và vô hiệu hóa kích hoạt của bạn, và sau đó chạy:
SELECT event_time, succeeded, server_principal_name, [object_name], [statement]
FROM sys.fn_get_audit_file ('C:\Temp\MyAudit*', NULL, NULL);
Nếu bạn không thể sử dụng kiểm toán do phiên bản hoặc các vấn đề khác, bạn có thể thực hiện việc này tương đối rẻ tiền bằng cách sử dụng theo dõi phía máy chủ. Chỉ cần chụp SQL:BatchCompleted
và tùy chọn bộ lọc TextData LIKE '%disable%trigger%'
(Bạn sẽ phải kiểm tra xem kịch bản của mình có tốt hơn để trả chi phí cho bộ lọc để tránh thu thập quá nhiều hay chỉ thu thập thêm và giảm chi phí sau. Bộ lọc có thể khá tốn kém nhưng tùy thuộc vào trên hệ thống.)
Tôi chắc chắn cũng có một cách để làm điều này với các sự kiện mở rộng. Nhưng cả XE và kiểm toán đều yêu cầu 2008+ và bạn không chỉ định phiên bản ...
Tốt hơn nữa, loại bỏ khả năng sửa đổi kích hoạt cho người dùng bỏ qua quản lý thay đổi. Lý tưởng nhất, bạn sẽ có thể xác định ai đã kích hoạt hoặc vô hiệu hóa trình kích hoạt mà không cần nhìn vào cơ sở dữ liệu, bởi vì không ai nên làm điều đó mà không cần ghi lại.