已更改 Sql- 服务器版本,无法创建带有发送电子邮件警报的作业

Changed Sql-Server version, can't creat job with alert to send e-mail

在我管理的数据库中,我们有一些内部档案有截止日期,由我们在创建之日确定。现在,我需要收到一封电子邮件,告诉我哪一个已终止。

我用代码创建了一个简单的工作,可以完成所有工作,不行。我已经创建了一个警报,不行,总是出错,或者当没有出错时,什么也没有发生。

select *
from bo
where nmdos like '%preço%'
  and datafinal = DATEADD(day, -1, convert(date, GETDATE()))

我需要创建一个警报,当代码 returns 该档案上的名称和客户编号时

您可以创建存储过程来处理查询检查,这将检查是否返回了任何行。如果返回行,则发送电子邮件。这可以通过以下方式实现。假设您在 SQL 实例中配置了 dbsend 邮件。

 CREATE PROCEDURE dbo.DossierEmailSend
 AS
 DECLARE @rows int;
 DECLARE @message varchar(1000);
 SET @rows = (SELECT COUNT(*)  
            FROM bo
            WHERE nmdos LIKE '%preço%'
            AND datafinal = DATEADD(day, -1, CONVERT(date, GETDATE()))
            )
 SET NOCOUNT ON 
 SET @message = '<HTML>As at ' + CONVERT(char(19),GETDATE(),120) + '<BR><BR>DOSSIER FOUND'

 IF @rows > 0 
 BEGIN

 EXEC dbo.uspSendEmail 'FOUND DOSSIER', 'YOUR EMAIL', @message, NULL, 'CC EMAIL 1; CC EMAIL 2'
 SET NOCOUNT OFF

 END

然后您可以在 SQL Agent 中创建一个作业,它将根据您需要的任何频率执行检查。

如果您缺少发送邮件 sp,您可以创建它:

 CREATE proc [dbo].[uspSendEmail]
 @subject nvarchar(max),
 @to nvarchar(max),
 @body nvarchar(max),
 @file nvarchar(max)='',
 @cc nvarchar(max)='',
 @bcc nvarchar(max)='',
 @query nvarchar(max)='',
 @attach_query_result_as_file tinyint=0,
 @query_attachment_filename nvarchar(max)=''
 as      

 EXEC msdb.dbo.sp_send_dbmail @profile_name = NULL,
 @body_format = 'HTML',
 @copy_recipients = @cc,
 @blind_copy_recipients = @bcc,
 @recipients = @to,
 @body = @body,
 @subject = @subject,
 @file_attachments = @file,
 @query = @query, 
 @attach_query_result_as_file = @attach_query_result_as_file,
 @query_attachment_filename = @query_attachment_filename 
 return 0