当我的SQL Server 2012数据库表中的记录满足特定条件时,我需要识别并得到通知。例如,当trans_record表中的记录在“error”的“status”列中有任何条目时。
查询很简单,我已经设置了一个SSIS包来查询具有相应“where”子句的表。我跟着这个SQL Agent作业,每天早上7点运行SSIS包,并将违规记录导出到一个平面文本文件。
我需要了解的是,只有在找到SSIS包执行查询的记录时,才能通过电子邮件发送电子邮件。无论是否找到任何记录,SSIS包似乎总是会创建一个文件。
我看到SQL Server支持通知警报和已定义的操作员,但我不知道只有在我的查询返回有效记录时才会收到通知。
如何在SQL Server中进行设置?
由于
答案 0 :(得分:0)
如果我理解正确,只有当表中的记录存在错误状态时,才希望通过SSIS通过电子邮件发送。如果这是正确的,那么你可以从SSIS包中实现这一点。
如果您想查询数据库并发送电子邮件,那么您将需要两个任务和两个连接:
使用相关数据库连接详细信息配置连接并交换电子邮件连接的详细信息。
添加与任务的连接,从Exec SQL到Send Email任务创建Precedence Constraint。
在Exec SQL中创建查询或使用存储过程返回false或true如果记录存在,或者您更喜欢表中记录的计数。
将查询结果返回给变量(SSIS变量,您必须将其添加到包中)。更改Precedence Constraint上的设置以添加表达式的评估并使用您的变量,即如果您将变量设置为@recordPresent,则评估将为@ recordPresent == true(如果返回的值为false或true)或@recordPresent&gt ; 0(如果变量包含记录数)。
如果表达式的计算结果为true且约束属于requiered类型,即成功,完成,则失败,控件将被传递给下一个任务,在本例中为Email。如果正确设置了发送电子邮件任务(电子邮件的发件人,收件人,主题和正文以及交换连接字符串是否正确),则只有在表格中有记录时才会发送电子邮件。
我希望这会有所帮助。