1

我有一个在多个 ASP.NET (VB.NET) 网站之间共享的 SQL Server 数据库,该数据库有一个存储客户查询的表 - 我希望提供电子邮件通知,通知组织内相关人员的新查询(可能将一些查询数据放入电子邮件正文中)。请有人可以概述我的选项如何实施?

我的想法是:

  1. SQLMail
  2. 数据库邮件
  3. 使用 System.Net.Mail 库的 VB.NET 存储过程?
  4. 其他选择?

选项 3 似乎是可取的,因为我知道如何在 VB.NET 中执行此操作,而且它很简单。

  • 我还有哪些其他选择?
  • 有什么注意事项?
  • 我可以实时执行此操作,即触发器(插入量低)吗?
  • 还是分批完成(即一项工作)是否至关重要?

非常欢迎任何帮助!谢谢。

4

2 回答 2

5

在 1)、2) 和 3) 之间,唯一值得考虑的是 2)。1) 是一个死产,使用一个因其问题和问题而臭名昭著的已弃用功能。3) 是一个坏主意,因为它破坏了事务一致性(即使插入回滚,也会发送 SMTP 邮件)并且是性能消耗,因为调用者(大概是您的网页正在呈现)必须等到 SMTP 交换完成(即. 是同步的)。只有 2) 提供事务一致性并且是异步的(在 SMTP 完成之前不会阻塞调用者)。

通常,尽管这样的任务最好委派给 Reporting Services 任务。您将创建一个带有电子邮件传递的数据驱动订阅。这是开箱即用的,无需重新发明轮子。

于 2012-03-21T22:49:23.307 回答
1

我曾遇到过与此类似的情况,我采用的解决方案是让 C# Windows 服务每分钟检查一次 SQL Server 作业队列。此作业队列将包括诸如发送电子邮件之类的作业。然后,您可以在您的表上使用 TRIGGER 插入一个新的“电子邮件警报”作业,该作业将在下一个周期被拾取。

于 2012-03-21T22:34:42.470 回答