1

我们使用 SQL Server 2008R2 来处理邮件队列。新邮件进入队列,然后每分钟一次,批处理文件读取未处理的邮件,进行一些处理,通过 smtp 发送邮件并将队列中的邮件标记为已发送(记录不会从队列中删除,因为表还用作邮件历史记录表)。

这种方法的问题在于它每分钟只运行一次,因此邮件不会“自动”发送出去,并且批处理文件每分钟运行一次,即使几个小时都没有外发邮件。

SQL Server 有没有办法在插入邮件队列的每个新项目上运行批处理文件?我知道有触发器,但据我了解它们是异步的,所以如果批处理文件需要时间,它将阻止 sql server

4

2 回答 2

1

我将创建一个 SQL Server 代理作业以使用作业中的游标运行批处理文件,以防有多个行同时更新。在运行代理作业的表上创建触发器。这不会阻止 SQL 服务器,因为它是通过 SQL 代理运行的。这些行将被处理并立即发送电子邮件。

于 2013-05-15T14:14:41.043 回答
0

您是在谈论从 SQL Server 发送电子邮件吗?

http://msdn.microsoft.com/en-us/library/office/aa155737(v=office.10).aspx

如果是这样,只需将发送合并到您的程序中。

如果没有,假设您有 IIS,请不要尝试创建自己的队列。创建一个 CLR 过程,将电子邮件添加到某个位置的 .NET 队列,例如您的批处理服务器。然后,您可以在批处理服务器上运行一个进程来读取队列并发送电子邮件。不要定期运行它 - 只需将其保持在一个循环中,该循环会阻塞读取队列并发送邮件。(出于弹性和 DR 原因,您可能必须将其添加到定期启动/运行它或某些东西)。

于 2013-05-15T14:59:44.907 回答