通过DB或通过CLR的服务调用发送邮件

时间:2013-01-16 09:19:14

标签: sql-server sql-server-2005 email

我有一个场景,我会在每次插入表格后检查条件后发送邮件。

  • 触发正确的方法吗?

我的第二个问题是采取什么方法

  • 我应该直接从数据库发送邮件吗? (注意:我的DBserver和Mail服务器位于不同的网络中,可能会创建防火墙规则例外)

  • 我应该有一个CLR-sproc。从数据库中,我调用CLR-sproc和CLR-sproc调用服务,然后从那里发送邮件。

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

SQL Server DBMail和CLR proc都将使用SMTP发送电子邮件。那么,为什么要增加复杂性?

此外,通过DBMail或CLR发送电子邮件需要在INSERT上进行处理。请注意,DBMail使用队列,因此比运行CLR过程影响更小。

触发器是一种很好的方法。但是,考虑使用存储过程使用在事务外部发送的电子邮件来执行ISNERT(由于INSERT,您将有一个隐式的)。在触发器中发送意味着它是INSERT的隐式事务的 part

从安全角度来看,SQLMachine仍然需要访问SMTPMachine,无论是使用DBMail还是CLR Proc的服务调用。

答案 1 :(得分:0)

1)是的,触发器是在每次插入后执行操作的正确方法

2)SQL服务器有一个名为Database Mail的功能,看起来它会做你想要的(尽管我自己从未使用过它)