mssql trigger sql-agent
- Category: 電腦相關
- Last Updated: Thursday, 05 January 2017 13:42
- Published: Wednesday, 07 September 2016 13:38
- Written by sam
公司幅員遼闊,且在安全方面限制尚無作為
致人員時常反應,Job被停掉了~~~
目前作法是在MSSQL Server的sysjobs建立一項Trigger
當有人停用或啟用工作排程時,會發信至設定的信箱
USE msdb
GO
CREATE TRIGGER tr_SysJobs_enabled_SAM
ON sysjobs
FOR UPDATE AS
SET NOCOUNT ON
DECLARE @UserName VARCHAR(50),
@HostName VARCHAR(50),
@JobName VARCHAR(100),
@DeletedJobName VARCHAR(100),
@New_Enabled INT,
@Old_Enabled INT,
@Bodytext VARCHAR(200),
@SubjectText VARCHAR(200),
@Servername VARCHAR(50)
SELECT @UserName = SYSTEM_USER, @HostName = HOST_NAME()
SELECT @New_Enabled = Enabled FROM Inserted
SELECT @Old_Enabled = Enabled FROM Deleted
SELECT @JobName = Name FROM Inserted
SELECT @Servername = @@servername
-- check if the enabled flag has been updated.
IF @New_Enabled <> @Old_Enabled
BEGIN
IF @New_Enabled = 1
BEGIN
SET @bodytext = 'User: '+@username+' from '+@hostname+
' ENABLED SQL Job ['+@jobname+'] at '+CONVERT(VARCHAR(20),GETDATE(),100)
SET @subjecttext = @Servername+' : ['+@jobname+
'] has been ENABLED at '+CONVERT(VARCHAR(20),GETDATE(),100)
END
IF @New_Enabled = 0
BEGIN
SET @bodytext = 'User: '+@username+' from '+@hostname+
' DISABLED SQL Job ['+@jobname+'] at '+CONVERT(VARCHAR(20),GETDATE(),100)
SET @subjecttext = @Servername+' : ['+@jobname+
'] has been DISABLED at '+CONVERT(VARCHAR(20),GETDATE(),100)
END
SET @subjecttext = 'SQL Job on ' + @subjecttext
-- send out alert email
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'sam',
@recipients = 'sam小老鼠myla.gotdns.com',
@body = @bodytext,
@subject = @subjecttext
END
