SQL server 表数据改变触发发送邮件的方法

今天遇到一个问题,原有生产系统正在健康运行,现需要监控一张数据表,当增加数据的时候,给管理员发送邮件

领到这个需求后,有同事提供方案:

。这是个大胆的想法啊,从来没写过这样的触发器。

以下是参考文章

方法: 触发器调用外部程序

。 xp_cmdshell

第一篇提供的方法是需要开启xp_cmdshell

先开启xp_cmdshell

打开外围应用配置器—>

功能的外围应用配置器—>

实例名\Database Engine\xp_cmdshell—>

启用

然后可以调用外部程序:Exec xp_cmdshell 'c:\calc.exe' 。

第二种方法:

将插入的值传给.bat 。

同样使用调用外部程序的 xp_cmdshell 的权限


其实第二种方法可以归为第一种。

下面说说第三种方法

sql servere CLR

这种方法可以利用VS给sql server 写存储过程和触发器。打开了VS不愁写代码管理员发email。

第四种方法

sql server Management -->Database Mail


开启Database Mail 之后,配制好发邮件的设置,直接写触发器就可以把插入的内容通过sql server 发送出来了。

rush:sql;"> Create TRIGGER tri_email ON [dbo].[Imagegalleries] AFTER insert AS BEGIN if exists(select * from inserted) begin declare @content nvarchar(max) select @content=i.Name+'|'+i.ImagePath from inserted i; exec msdb.dbo.sp_send_dbmail @profile_name='sqlProfile',@recipients=243594541@qq.com',@subject='sql server send email by trigger',@body=@content end END GO

这种方法是最直接最简便的方法

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...