如果查询结果符合条件,我想在SQL中配置作业给我发电子邮件。 从下面的查询中,我得到了6行返回:
SELECT USERNAME, FORENAME, SURNAME, LOGINCOUNT
FROM CS.LOGN.ACCOUNTS
where LOGINCOUNT > 900
我已经配置了一个作业来运行上面的内容并通过电子邮件将结果发送给我。这是我用以下SQL实现的:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Alerts',
@recipients = 'abc@abc.com',
@subject = 'CS - Users with more than 900 logons',
@query = N'SELECT USERNAME, FORENAME, SURNAME, LOGINCOUNT FROM CS.LOGN.ACCOUNTS where LOGINCOUNT > 900',
@attach_query_result_as_file=1,
@query_attachment_filename = 'CS - Users with more than 900 logons.csv',
@query_result_no_padding = 1,
@query_result_separator = ','
有什么我可以添加到上面的,所以如果没有返回任何行,它不打算给我发电子邮件?我目前遇到的问题是,即使没有返回任何行,我也会收到电子邮件。
答案 0 :(得分:1)
我会在作业中创建另一个T-SQL步骤,其中包含以下查询:
declare @counter int
with query as (SELECT USERNAME, FORENAME, SURNAME, LOGINCOUNT FROM CS.LOGN.ACCOUNTS where LOGINCOUNT > 900)
select @counter = count(*) from query
IF @counter > 0
BEGIN
SELECT 'Rows exist, proceed to e-mail step'
END
ELSE
BEGIN
RAISERROR('No rows exist, quit job', 16, 1)
END
在高级选项卡中,确保将其配置为在引发错误时退出作业。如果没有出现错误,请继续执行电子邮件步骤
希望这有用:)