【问题标题】:Email notification from existing SQL-based application来自现有基于 SQL 的应用程序的电子邮件通知
【发布时间】:2011-05-16 12:30:08
【问题描述】:

我正在尝试通过现有的定制 CRM 应用程序来确定使用电子邮件通知的最佳选择。

基本上我想做的是当受影响的用户的一个工作项目违反其 KPI(关键绩效指标)时,向他们发送一封电子邮件。

我最好通过使用 SQL 触发器和存储过程来做到这一点(它们都可以用来实现这一点吗?)还是应该使用一些 c# 编码和计划任务?还是我错过了一条更简单的路线?

【问题讨论】:

  • 您需要输入您使用的 SQL Server 的品牌和版本。当然,对于 SQL Server,答案很大程度上取决于版本(因为 xp_sendmail 已被删除)。
  • KPI 的示例是什么?如果您有一个单独的服务轮询数据,可能会更好地扩展并且更易于维护。主要取决于您的要求。
  • 抱歉,它会使用 SQL Server 2005。如果我没记错的话,它仍然有 xp_sendmail,现在的替换是什么,db_mail?
  • 一个例子是查询解决,员工可能有一个 5 天的查询周转 KPI,违反 4 天将需要向员工发送电子邮件来确定优先级那件作品。

标签: c# .net sql stored-procedures triggers


【解决方案1】:

我在使用 Windows 服务之前已经这样做了,该服务每分钟轮询一次数据库,然后撰写和发送电子邮件。

我想触发器是另一种可能的方法,但如果发送电子邮件失败怎么办?无论如何,您可能想要某种回退,例如计划任务方法。

【讨论】:

    【解决方案2】:

    您可以使用 Quartz.Net 之类的东西,它是一个调度引擎。它能够以定义的间隔/在定义的时间运行任务,并且还可以在任务失败时重试,或以某种方式提醒您。

    Quartz.Net 可通过 NuGet(或 Add Library Package)获得,并且在其 site 上有很多很好的文档

    【讨论】:

      【解决方案3】:

      我个人会使用 SQL 代理作业来撰写电子邮件,然后发送。通过这种方式,您可以为要运行的作业指定某些凭据(例如,访问邮件服务器),并且您可以根据需要随时运行它。

      我目前使用的方法是一个简单的 CLR 存储过程,它利用 .Net 中的 SMTP 功能,这需要一组构造电子邮件的参数。

      【讨论】:

        【解决方案4】:

        如果您正在询问在 SQL Server 2005 中发送电子邮件的最佳方式,我认为 [msdb.dbo.sp_send_dbmail] 是您的朋友。您可以在网络上进行快速搜索以获取详细信息,但您必须在使用它之前正确设置数据库邮件。我将它与 tsqlunit 一起使用来运行一项夜间作业,以了解某些业务规则是否合规。

        如果您正在寻找一种捕获事件以发送电子邮件通知的好方法,这完全取决于您的设置以及您希望此检查发生的频率。它可能是您附加到已经存在的存储过程的东西,或者您可以使用触发器(如果您的设置可以处理它)。有时最好从小处着手,在吸取一些教训后转向更好的领域。

        希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-10
          • 2011-03-09
          • 2015-03-04
          • 2021-11-06
          • 2013-07-12
          • 1970-01-01
          相关资源
          最近更新 更多