2009-11-23 119 views
5

我希望在我的SQL Server 2008计算机上发送来自Trigger的电子邮件。电子邮件的数据基本上是一些触发信息。SQL Server触发器可以给我发电子邮件吗?

有人可以提供一些简单的/示例代码如何做到这一点,请吗?例如。系统存储过程称为什么?等

我还没有设置任何SQL邮件和东西,所以我猜它是内置的,我可以利用它。但要确定的是:我需要在服务器上安装任何额外的软件吗?

+0

没错。 [http://blog.sqlauthority.com/2008/08/23/sql-server-2008-configure-database-mail-send-email-from-sql-database/](http://blog.sqlauthority.com/2008/08/23/sql-server-2008-configure-database-mail-send-email-from-sql-database /) – NitroxDM 2009-11-23 00:07:33

+0

你能吗?是。你应该?绝对不是,恕我直言。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-abusing-triggers.aspx – 2009-11-23 01:12:30

回答

5

本示例在titles表更改时向指定人员(MaryM)发送电子邮件消息。

USE pubs 
IF EXISTS (SELECT name FROM sysobjects 
     WHERE name = 'reminder' AND type = 'TR') 
    DROP TRIGGER reminder 
GO 
CREATE TRIGGER reminder 
ON titles 
FOR INSERT, UPDATE, DELETE 
AS 
    EXEC master..xp_sendmail 'MaryM', 
     'Don''t forget to print a report for the distributors.' 
GO 

来源:MSDN

3

触发器应保持最短时间。应允许原子数据库更新/插入/删除尽可能快。考虑添加一个单独的表,触发器可以将数据插入其中,单独的进程根据内容监视并启动电子邮件。

当然,这并不涉及是否可以使用TransactSQL来创建电子邮件 - 我很好奇自己的那个!

+0

Re:触发器 - 是的。我知道,等等等等,这只是为了删除..只为了一些调试的目的和一些低活动表和SQL电子邮件是异步的,我相信.. – 2009-11-23 00:11:21

+0

数据库邮件是,但SQLMail和其他变种(特别是通过sp_OA使用CDO)不是。在你原来的问题中,你没有说你正在使用数据库邮件,你实际上是在说SQL邮件。有一个很大的不同。在任何情况下,即使您在当前系统上使用数据库邮件,如果您将代码移动到另一个系统,出于某种原因您不能使用数据库邮件,该怎么办? – 2009-11-23 13:41:40