首页 > 解决方案 > 基于查询结果的 SSIS 作业到电子邮件

问题描述

我有一个返回 4 列的查询: DATE QTY1 QTY2 MATCH

如果两个数量匹配,则 MATCH 列将为 'Y',如果不匹配,则为 'N'

我试图弄清楚如何让 SSIS 作业每天早上按计划运行,当它在 MATCH 列中获得“N”时让我通过电子邮件发送给我。

我在 SSIS 中尝试了一些不同的东西,例如条件拆分,但我是 SSIS 的新手,不知道如何实现这一点。有任何想法吗?还是有其他方法可以解决这个问题?

标签: sqlsql-serverssis

解决方案


看起来像是sp_send_dbmail的工作它可能已经在您的服务器上设置好了,请与您的 DBA 讨论如何访问它。

以下查询可以直接在 SQL 代理作业步骤中使用,也可以在 SSIS 中的执行 SQL 任务中使用

我们测试是否满足条件(如果存在),如果满足,那么我们将发送一封电子邮件。我们将把查询结果直接内联到电子邮件中,这样您就可以看到满足条件以及所发生情况的详细信息

IF EXISTS
(
    SELECT * FROM dbo.QuerySource AS QS WHERE QS = 'N'
)
BEGIN
    EXECUTE msdb.dbo.sp_send_dbmail @recipients = 'me@domain.com'
    ,  @subject = 'Mismatch in data'
    ,  @body = 'Bad things happened today'
    ,  @query = 'SELECT * FROM dbo.QuerySource AS QS WHERE QS = ''N''';
END

推荐阅读