【问题标题】:SSIS get emails from database and send individual emailsSSIS 从数据库中获取电子邮件并发送单独的电子邮件
【发布时间】:2012-04-06 18:10:47
【问题描述】:

我需要安排一个每月运行的任务,该任务将查询 sql server,获取电子邮件列表,并向列表中的每个人发送单独的电子邮件。

我假设我需要使用 SSIS 来安排每月任务,但我不确定我是否应该在 sql server 中完成所有工作并使用存储过程和数据库邮件,或者我是否应该使用 SSIS 调用完成所有工作的 .Net 可执行文件?

关于如何做到这一点的任何建议?

【问题讨论】:

  • 电子邮件的性质是什么?如果是报告或类似报告的 ssrs 可能是更好的工具,内置调度和电子邮件传递。 msdn.microsoft.com/en-us/library/ms160334.aspx
  • SSIS 对调度一无所知——责任是 SQL 代理的领域。如果您想要或需要 SSIS 的 OOB 功能(日志记录、配置等),请使用它。否则,我会调用 sp_send_dbmail 作为 SQL 代理作业中的步骤(较少维护)。如果您需要更多 .NET 感觉的解决方案,我会选择 PowerShell。 DBA 倾向于接受他们可以破解(而不是阅读)的脚本。给他们一个黑盒 EXE 在服务器上运行,他们会笑你出楼。

标签: c# sql-server-2008 ssis


【解决方案1】:

我个人在 SQL Server 中做过同样类型的事情。您可以设置 SQL Mail 并编写一个存储过程来提取电子邮件地址。然后您可以简单地使用msdb.dbo.sp_send_dbmail 并提供profile 名称、recipients 列表、subjectattachment 等所有选项。

然后您可以使用 sql server 中的作业部分来每月、每周、每小时等运行这个存储过程。

【讨论】:

  • 最好在 sql server 中完成所有工作,还是在 .Net 中创建一个控制台应用程序来完成所有工作,然后安排 exe 每月运行一次?
  • @user1202606 - 这完全取决于您和您的 dba 或开发团队。它是同样的事情,你仍然需要调用一个存储过程来获取数据(电子邮件),如果你可以在 sql server 端完成这一切,作为一个工作把它包起来。如果没有,请创建一个 .net c# 或 vb.net 应用程序来处理它并安排它。真的一样。
【解决方案2】:

SQL Authority 详细介绍了如何在不使用 SSIS 的情况下从数据库中执行此操作。 http://blog.sqlauthority.com/2008/08/23/sql-server-2008-configure-database-mail-send-email-from-sql-database/

设置完成后,您可以使用 SQL 代理来安排处理和发送电子邮件的过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多