您的位置:知识库 » 数据库

MSSQL数据库邮件系列二(SSMS和TSQL)

作者: Sai~  来源: 博客园  发布时间: 2009-09-29 10:33  阅读: 2318 次  推荐: 0   原文链接   [收藏]  

一、前言
  在配置数据库邮件之前,先和大家说说数据库邮件体系,首先我们知道的,msdb系统数据库保存有关Job,Database Mail,Nodifyication等等之类信息的.
  MSSQL2005的邮件功能,使用了Services Broker进行了队列处理.然后使用外部进程,这个可以在配置成功Mail以后查看任务管理器中的进程.
  另外的, sp_send_dbmail是手动发送邮件的存储过程,我们必须显示的赋值才能发送,等配置完以后和大家说说这个存储过程.

二、配置.
  首先,因为邮件是基于services broker发送的,我们必须确保msdb数据库打开了service broker 功能.

USE msdb;
--首先查看是否开启了数据库邮件
EXEC sysmail_help_status_sp
--先启用数据库邮件
SELECT * FROM sys.configurations
EXEC sp_configure 'show advanced options',1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'Database Mail XPs',1
RECONFIGURE WITH OVERRIDE
--查看是否启用Service Broker
SELECT is_broker_enabled 是否开启FROM sys.databases WHERE [name]='msdb'
--我们使用启用这个数据库Service Broker
ALTER DATABASE msdb SET ENABLE_BROKER
--我们使用可以单独为数据库邮件启用Service Broker
EXECUTE dbo.sysmail_start_sp ;
GO
--关闭Serice Broker
EXEC

下面开始配置:
  #1:打开SSMS的对象资源管理器->在管理文件中->打开数据库邮件->右键->选择配置数据库邮件
  #2:我们会得到这样一个对话框:

  我们先选择第一个Radio,重新配置
  #3:配置文件名填写 配置文件的名称

 

  配置文件名填写,配置文件的名称.
  然后我们新添加一个SMTP帐号,而且在对话框中有说明,一个配置文件可以与多个SMTP帐号关联,说明可以故障转移,当我们的一个SMTP服务器宕机异常的时候,自动的转移到下一个SMTP账户.
配置文件名填写 配置文件的名称

  #4:

  我这里的话已经新建了一个数据库邮件帐号,所以你需要单击新建帐号打开对话框
  #5:

 

  帐户名的话就是在上幅图中的帐户名的名称显示.然后看到SMTP这块,电子邮件地址也就是接受发送邮件的地址.而答复电子邮件可以设置相同的电子邮件,服务器名称制定自己的主机IP或者主机名
  看到SMTP身份验证
  之前我们在POP3中设置的就是基本身份验证(这种是明文形式的密码,不太安全,以后可以使用CA,我CA的文章已经在写了,到时候发上去吧呵呵)
  密码帐号自己填写.
  成功以后,就选择一个配置文件账户.
  #6:我们可以建立多个帐号方便故障转移

  #7:

  在公共配置文件中,博友可以按照自己的爱好配置了,配置是否默认配置文件==
  记得一定要有msdb中的角色:

SELECT
rl.name
AS [Name]
FROM
sys.database_principals
AS rl
INNER JOIN sys.database_principals AS ou ON ou.principal_id =
rl.owning_principal_id
WHERE (rl.type = 'R')

  查询中的DatabaseMailUserRole角色.
  公共配置文件对 msdb 数据库中的 DatabaseMailUserRole 数据库角色的所有成员都可用。它们允许 DatabaseMailUserRole 角色的所有成员使用该配置文件发送电子邮件。专用配置文件为 msdb 数据库中的安全主体而定义。它们仅允许指定的数据库用户、角色和 sysadmin 固定服务器角色的成员来使用该配置文件发送电子邮件。

#8: 可以配置具体的参数,比如文件扩展名啊,重试次数啊,日志记录级别等

#9:一直下一步,确定.如果成功了恭喜你,你认真查看了本文章
#10:继续回到对象资源管理器->数据库邮件->右键发送测试文件


  我们通过自己建立账户1@mssql.com向2@msql.com发送邮件.
  我们通过下面的方式来查看相关的信息

USE msdb;
GO
--查看发送的邮件
SELECT * FROM sysmail_sentitems
--查看我们失败的邮件
SELECT * FROM sysmail_faileditems
--查询所有的邮件
SELECT * FROM sysmail_allitems
--我们经常这种关联来查看失败的邮件的外部进程日志
SELECT * FROM sysmail_faileditems A INNER JOIN sysmail_event_log B ON
 A.mailitem_id
=B.mailitem_id
--查看附件信息
SELECT * FROM sysmail_mailattachments
--查看所有的数据库邮件日志,里面包含了我之前的测试,现在我要进行一些删除
SELECT * FROM sysmail_event_log
--删除成功的数据库邮件日志
EXECUTE msdb.dbo.sysmail_delete_log_sp 'success' ;
GO
--删除所有的日志
EXECUTE msdb.dbo.sysmail_delete_log_sp ;
GO
--删除特定日期的
EXECUTE msdb.dbo.sysmail_delete_log_sp @logged_before = '2009-09-20' ;

  其他的一些存储过看看:
  ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/udb9/html/5aa2886e-1db1-4066-85df-57ccf4538c54.htm
  最后就是使用sp_send_dbmail来发送邮件可以查阅MSDN:
  ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/f1d7a795-a3fd-4043-ac4b-c781e76dab47.htm

三、结束语
  通过两篇文章博友应该基本了解了数据库邮件的配置,至于如何使用,就看大家了哈.

0
0
标签:SQL 邮件

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻