SQL SERVER 数据库邮件配置

时间:2023-03-10 01:25:36
SQL SERVER 数据库邮件配置

1.简单了解数据库邮件的概念和使用的传输协议及系统体系:

数据库邮件是从 SQL Server 数据库引擎中发送电子邮件的企业解决方案。通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件。邮件中可以包含查询结果,还可以包含来自网络中任何资源的文件。 无需 Microsoft Outlook 或扩展消息处理应用程序编程接口(扩展 MAPI)。数据库邮件使用标准的简单邮件传输协议 (SMTP) 发送邮件。无须在运行 SQL Server 的计算机上安装扩展 MAPI 客户端便可以使用数据库邮件。

SQL SERVER 数据库邮件配置

要是想详细了解有关数据库邮件其他详细描述内容,可以查阅联机帮助文档:URL:ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-CHS/s10de_4deptrbl/html/14cbf88f-d9d1-41a5-994e-532e2973ac9e.htm

2.下面我们通过使用数据库邮件配置向导和sp_configure 存储过程配置启用数据库邮件:

SQL SERVER 数据库邮件配置

SQL SERVER 数据库邮件配置

SQL SERVER 数据库邮件配置

SQL SERVER 数据库邮件配置

SQL SERVER 数据库邮件配置

SQL SERVER 数据库邮件配置

SQL SERVER 数据库邮件配置

SQL SERVER 数据库邮件配置

SQL SERVER 数据库邮件配置

SQL SERVER 数据库邮件配置

SQL SERVER 数据库邮件配置

上面,我们配置好数据库邮件账户和配件文件,现在我们使用 SQL Mail XPs 选项可在此服务器上启用 SQL Mail(该选项默认是关闭的)。


sp_configure 'show advanced options', 1
go
Reconfigure;
go
sp_configure 'SQL Mail XPs', 1
go
Reconfigure;
go

设置立即生效,无需停止并重新启动服务器,

3. 发邮件测试及查询数据库邮件日志:


use msdb
Go Exec dbo.sp_send_dbmail @profile_name='Andy的邮件配件',
    @recipients='test@163.com',
    @subject='数据库邮件测试',
    @body='这是从 WWW-0A82D0DF67C\SQL2008DE 上的数据库邮件发出的测试电子邮件!'
Go

SQL SERVER 数据库邮件配置

查看数据库邮件日志:

use msdb
Go
Select * From dbo.sysmail_log
GO 

SQL SERVER 数据库邮件配置

要是发送OK,那么我们在发送目标邮箱里面就会收到类似这样的成功邮件:

SQL SERVER 数据库邮件配置

 4、使用SQLSERVER代理,定时发送邮件

SQL SERVER 数据库邮件配置

DECLARE @tableHTML NVARCHAR(MAX) ;
DECLARE @date SMALLDATETIME SET @date = CONVERT(CHAR(), GETDATE(), )
DECLARE @title NVARCHAR()
SELECT @title = CONVERT(CHAR(), GETDATE(), ) + ' JX'
DECLARE @DBA NVARCHAR()
SET @DBA = 'xxx@163.com'
SET @tableHTML = N'<table border="1">' + N'<tr><th>机型</th><th>产品属性</th>'
+ N'<th>LastUpdateTime</th></tr>'
+ CAST(( SELECT td = [机型] , ''
, td = [产品属性], '' ,
td = [LastUpdateTime] , ''
FROM [GreeSellInfor].[dbo].[Dim_ProductList_AZWXDirtyData]
where exists (SELECT [机型]
FROM [GreeSellInfor].[dbo].[Dim_ProductList_Artificial] BB
where [GreeSellInfor].[dbo].[Dim_ProductList_AZWXDirtyData].机型=bb.机型 ) or
exists ( SELECT [机型]
FROM [GreeSellInfor].[dbo].[Dim_ProductList_ERP] BB
where [GreeSellInfor].[dbo].[Dim_ProductList_AZWXDirtyData].机型=bb.机型)
FOR XML PATH('tr') ,
TYPE ) AS NVARCHAR(MAX)) + N'</table>' EXEC msdb.dbo.sp_send_dbmail @profile_name='XXX' ,@recipients = @DBA, @subject = @title,
@body = @tableHTML, @body_format = 'HTML' ;