Quản lý các SQL Agent Job là một phần trong những nhiệm vụ quan trọng của 1 database admin. Đôi khi vì lý do nào đó, 1 database server có nhiều account có quyền cao nhất (sysadmin) và ai đó do vô tình hay vì mục đích nào đó, thay đổi các Agent Job, thậm chí disable nó chẳng hạn, thì những người có liên quan bằng cách nào đó nên nhận được những cảnh báo.
Tôi đã tìm hiểu và dựa vào thông tin ở bài viết bên dưới, tôi đã cấu hình thử và đã thành công. Tình huống tác giả đưa ra là nếu có ai đó enable hay disable bất kỳ 1 SQL Job nào, SQL server sẽ tự động gửi email cảnh báo cho những người liên quan. Trong thủ thuật này tác giả dùng đến table msdb.dbo.sysjobs, và bằng cách tạo ra 1 trigger trong table này, ta có thể thực hiện được điều đó.
Tham khảo chi tiết ở đây:
http://www.mssqltips.com/sqlservertip/1803/auto-alert-for-sql-agent-jobs-when-they-are-enabled-or-disabled/
Như hình bên dưới, tôi tạo 1 job tên là 'TestJobChange' và thử disable nó, sau vài giây tôi nhận được 1 email cảnh báo là job này đã bị disable.
Cái tôi quan tâm bây giờ là giả sử trong nội dung job có những câu SQL, và ai đó sửa những câu này, tôi muốn biết họ đã sửa cái gì. Ví dụ như trong 1 job có thể có nhiều Step, mỗi step chứa nhiều đoạn SQL, sẽ rất có ích nếu ta biết được user nào đã sửa step nào, sau đó ta có thể đến trao đổi với họ để hiểu chi tiết hơn, góp phần quản trị tốt database server của mình.
Sau một hồi suy nghĩ thì tôi thấy thông tin chi tiết về các step được lưu ở table msdb.dbo.sysjobsteps. Và cũng tương tự như trên, ta có thể đặt 1 trigger ở đây để biết user đã sửa step nào.
http://www.sqlmatters.com/Articles/Checking%20the%20status%20of%20SQL%20Server%20Agent%20jobs.aspx
03/01/2014
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment