Sql server 2008 如何在创建/删除作业时触发SQL Server 2008

Sql server 2008 如何在创建/删除作业时触发SQL Server 2008,sql-server-2008,triggers,notifications,sp-send-dbmail,Sql Server 2008,Triggers,Notifications,Sp Send Dbmail,如何设置在创建/删除作业时发送电子邮件警报的SQL Server 2008触发器 经过数小时的研究,我发明了一种触发器。当SQL作业已启用/禁用时,触发器当前会向收件人发送电子邮件。触发器经过测试,工作正常 我想将触发器扩展到捕捉工作岗位的创建和删除,但我不确定如何操作 以下是我的代码: 使用[msdb] 去 将ANSI_空值设置为ON 去 在上设置带引号的\u标识符 去 更改触发器[dbo]。[jobChecker] 关于sysjobs 更新为 不计较 -声明变量- 声明@username

如何设置在创建/删除作业时发送电子邮件警报的SQL Server 2008触发器

经过数小时的研究,我发明了一种触发器。当SQL作业已启用/禁用时,触发器当前会向收件人发送电子邮件。触发器经过测试,工作正常

我想将触发器扩展到捕捉工作岗位的创建和删除,但我不确定如何操作

以下是我的代码:

使用[msdb] 去 将ANSI_空值设置为ON 去 在上设置带引号的\u标识符 去 更改触发器[dbo]。[jobChecker] 关于sysjobs 更新为 不计较 -声明变量- 声明@username VARCHAR50, @主机名VARCHAR50, @jobName VARCHAR100, @新启用的INT, @OldInt, @jobCreated INT, @bodyText VARCHAR200, @主题文本VARCHAR200, @服务器名VARCHAR50, @profileName VARCHAR50='profile_name', @收件人VARCHAR500=example@domain.com' -设置变量- 选择@username=SYSTEM\u USER 选择@hostName=HOST\u NAME 选择@servername=@@servername 选择@newEnabled=ENABLED FROM Inserted 选择@oldEnabled=已从已删除中启用 从中选择@jobName=Name -检查是否启用/禁用- 如果@newEnabled@oldabled 开始 如果@newEnabled=1 开始 SET@bodyText='用户'+@username+'在'+CONVERTVARCHAR20,GETDATE,100+'上从'+@hostName+'启用了作业。' SET@subjectText=@servername+':['+@jobName+']已启用' 终止 如果@newEnabled=0 开始 SET@bodyText='用户'+@username+'在'+CONVERTVARCHAR20,GETDATE,100+'上从'+@hostName+'禁用了作业。' SET@subjectText=@servername+':['+@jobName+']已被禁用 终止 在“+@subjectText”上设置@subjectText=”SQL作业 -发送电子邮件- EXEC msdb.dbo.sp_send_dbmail @profile_name=@profileName, @收件人=@recipients, @body=@bodyText, @subject=@subjectText
END尝试将更新的“FOR UPDATE”更改为“AFTER UPDATE、INSERT、DELETE” 这应该为inserts运行触发器,然后从表中删除

然后,您可以通过运行以下命令来检查它是否是更新、插入或删除

将@Type声明为varchar1; 设置@Type= 案例 当EXISTSELECT*FROM INSERTED和EXISTSELECT*FROM DELETED然后是“U”时,记录被更新。 当EXISTSELECT*FROM INSERTED时,则“I”-记录被插入。 当EXISTSSELECT*FROM DELETED时,则“D”-记录被删除。 否则无效
结束

谢谢!我得到了更新和插入部分的工作。但是,我收到的已删除触发器的电子邮件没有显示已删除作业的名称。有什么想法吗?我想您可能需要将该实例的SELECT jobName=Name从Inserted更改为SELECT jobName=Name从Deleted