今天遇到一个问题,原有生产系统正在健康运行,现需要监控一张数据表,当增加数据的时候,给管理员发送邮件。
领到这个需求后,有同事提供方案:
。这是个大胆的想法啊,从来没写过这样的触发器。
以下是参考文章:
方法: 触发器调用外部程序
。 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