我希望在我的SQL Server 2008计算机上发送来自Trigger
的电子邮件。电子邮件的数据基本上是一些触发信息。SQL Server触发器可以给我发电子邮件吗?
有人可以提供一些简单的/示例代码如何做到这一点,请吗?例如。系统存储过程称为什么?等
我还没有设置任何SQL邮件和东西,所以我猜它是内置的,我可以利用它。但要确定的是:我需要在服务器上安装任何额外的软件吗?
我希望在我的SQL Server 2008计算机上发送来自Trigger
的电子邮件。电子邮件的数据基本上是一些触发信息。SQL Server触发器可以给我发电子邮件吗?
有人可以提供一些简单的/示例代码如何做到这一点,请吗?例如。系统存储过程称为什么?等
我还没有设置任何SQL邮件和东西,所以我猜它是内置的,我可以利用它。但要确定的是:我需要在服务器上安装任何额外的软件吗?
本示例在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
触发器应保持最短时间。应允许原子数据库更新/插入/删除尽可能快。考虑添加一个单独的表,触发器可以将数据插入其中,单独的进程根据内容监视并启动电子邮件。
当然,这并不涉及是否可以使用TransactSQL来创建电子邮件 - 我很好奇自己的那个!
Re:触发器 - 是的。我知道,等等等等,这只是为了删除..只为了一些调试的目的和一些低活动表和SQL电子邮件是异步的,我相信.. – 2009-11-23 00:11:21
数据库邮件是,但SQLMail和其他变种(特别是通过sp_OA使用CDO)不是。在你原来的问题中,你没有说你正在使用数据库邮件,你实际上是在说SQL邮件。有一个很大的不同。在任何情况下,即使您在当前系统上使用数据库邮件,如果您将代码移动到另一个系统,出于某种原因您不能使用数据库邮件,该怎么办? – 2009-11-23 13:41:40
没错。 [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
你能吗?是。你应该?绝对不是,恕我直言。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-abusing-triggers.aspx – 2009-11-23 01:12:30