SSIS帮助:如果从查询中找到无效记录,如何发送电子邮件

时间:2010-08-22 00:26:44

标签: sql ssis

我想在每周运行的SSIS包中使用以下查询。所有这些查询都是截断表PlanFinder.InvalidAwps并使用新的无效记录加载它。现在,如果在invalidAwps表中找到任何无效记录,如何在SSIS包中使用此查询来发送电子邮件?我可以使用执行sql任务但不知道如果在InvalidAwps表中找到任何无效记录,包将如何发送电子邮件。

truncate table [PlanFinder].[InvalidAwps] 
go 

insert into [PlanFinder].[InvalidAwps] 
    (Ndc, AwpUnitCost) 
    SELECT DISTINCT P.Ndc Ndc, A.Price AwpUnitCost 
    FROM 
        PlanFinder.PlanFinder.HpmsFormulary P 
        LEFT JOIN (SELECT Ndc, Price FROM MHSQL01D.Drug.FdbPricing.vNdcPrices  
                   WHERE PriceTypeCode = '01' AND CurrentFlag = 1) A 
    ON P.Ndc = A.Ndc  
    WHERE (A.Ndc IS NULL OR A.Price <= 0 OR A.Price IS NULL) 
    AND p.Ndc IS NOT NULL  

2 个答案:

答案 0 :(得分:1)

我为自定义日志条目(错误)做了类似的事情,只需在我的包的末尾有一个任务收集错误并将它们转储到文本文件,然后发送文件。

假设您要包含无效记录列表,可以使用数据流任务将InvalidAwps中的行导出到平面文件(例如here),然后使用“发送电子邮件”任务发送文件作为附件。如果您的数据流任务使用行计数组件将计数存储到变量中,您可以将其用作不发送电子邮件的条件(如果计数为零)。

或者,如果您想为每条记录发送单独的电子邮件,则可以使用for-each循环,如this example中所示。

答案 1 :(得分:0)

根据您的要求,您将截断现有表,然后使用您的逻辑将新记录插入表中。

我不确定您如何将记录视为无效记录。对于此任务,我们将无效记录视为插入失败的记录。

在失败情况下,我们需要发送电子邮件。在控制流程中,将您的逻辑代码放在一个SQL任务中,如果该任务失败,请使用发送电子邮件任务,并将所需的电子邮件发送到派生或变量。