已更改 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
在我管理的数据库中,我们有一些内部档案有截止日期,由我们在创建之日确定。现在,我需要收到一封电子邮件,告诉我哪一个已终止。
我用代码创建了一个简单的工作,可以完成所有工作,不行。我已经创建了一个警报,不行,总是出错,或者当没有出错时,什么也没有发生。
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