SQL Server 2005中的邮件服务

Database Mail概述: SQL Server 2005中高性能的邮件发送  在SQL Server 2005中的全新设计  用于替代SQL Mail  高可用、易扩展、安全以及可支持  许多新的消息功能
可靠性: 使用SMTP-->无需Microsoft Outlook!  邮件发送在SQL Server主进程之外  支持集群  支持64位  支持SMTP的故障转移账户配置  不依赖于SQLCLR
扩展性: 基于异步和队列的架构  利用SQL Server 2005中的Service Broker进行队列  支持多个SMTP账户  支持多个配置文件  SMTP账户可服务于多个应用
安全性: 公用配置文件和专用配置文件  支持对系统事件的追踪  支持对已发送邮件的追踪  可对附件的文件大小进行控制  可对附件的文件扩展名进行控制  默认被禁用
可管理性: 可利用配置向导配置: 配置文件和账户 安全性 配置设定  日志: 跟踪已发送邮件和附件 对操作事件进行日志  支持对已发送内容和事件日志进行清理  消息API与SQL Mail的存储过程相类似
支持功能: 邮件中支持提交查询以及附件文件-->仅针对Windows身份验证  支持自定义发件地址和回复地址  支持HTML格式的邮件正文  支持设置邮件的优先级别  支持Unicode  可用于SQL Agent的报警机制  SMO对象模型中支持Database Mail
如何配置Database Mail呢? 利用图形化向导配置Database Mail  测试Database Mail配置
SQL Server 2005中的邮件服务
  展开管理--对着数据库邮件右键--选择配置数据库邮件  接着下一步
SQL Server 2005中的邮件服务
  选择通过执行以下任务来安装数据库邮件这一项--接着下一步--此时它提示数据库邮件功能不可用。是否要启用此功能?  如果你想启用的话 按是就ok了  如果你不想在这里启用数据库邮件功能的话也可以在功能的外围应用配置器的数据库邮件里面启用
SQL Server 2005中的邮件服务
  通过开始--程序--Microsoft SQL Server 2005--配置工具--选择SQL Server外围应用配置器--按功能的外围应用配置器--展开Database Engine--按数据库邮件--把启用数据库邮件存储过程沟上  按确定就启用数据库邮件功能了
SQL Server 2005中的邮件服务
  配置文件名就叫做DBA Profile吧  在说明里面输入Profile for DBA usage  在SMTP账户里面按添加--账户名就叫做DBA Account吧  在电子邮件地址和答复电子邮件里面输入[email protected]  在服务器名称里面输入SQL2005(本地计算机名称)  在SMTP身份验证里面保留默认值(匿名身份验证)  按确定
SQL Server 2005中的邮件服务
  接着下一步
SQL Server 2005中的邮件服务
  如果你希望这个配置文件可以被所有人都能够使用的话 你只要在公共配置文件里面把配置文件名沟上 接着下一步就ok了 
SQL Server 2005中的邮件服务
  在日志记录级别里面选择详细--接着下一步
SQL Server 2005中的邮件服务
  按完成
SQL Server 2005中的邮件服务
  此时可以看到状态全部成功了  按关闭
SQL Server 2005中的邮件服务
 对着数据库邮件右键--选择发送测试电子邮件--在数据库邮件配置文件里面选择DBA Profile--在收件人里面输入[email protected]  我在正文里面添加一句话-->Hello,This is a test mail!  按发送测试电子邮件  在发送电子邮件里面显示为8是因为我已经发送8次测试电子邮件了  也就是说是发送这封邮件的编号在系统日志里面 如果你发现没有收到这封邮件的话 待会可以根据这个ID来进行跟踪日志
SQL Server 2005中的邮件服务
 通过开始--程序--选择Outlook Express来打开它  按发送/接收--可以看到在收件箱里面有一封邮件--双击这封邮件来打开它--看到了吗? 可以看到我刚才在正文里面添加的一句话了-->Hello,This is a test mail!  说明我刚才对Database Mail配置成功了  注意: 我已经提前在Outlook Express的邮件里面把账户添加好了 
SQL Server 2005中的邮件服务
  对着数据库邮件右键--选择查看数据库邮件日志--可以看到所有成功发送邮件的日志和一些详细信息
Database Mail的主要组件: 配置和安全组件  消息组件  Database Mail进程  日志和审核组件
Database Mail的架构-->见下图:
       SQL Server 2005中的邮件服务
Database Mail配置文件和账户-->见下图:
              SQL Server 2005中的邮件服务
Database Mail图形化配置: Database Mail配置向导  Surface Area配置向导
Database Mail配置存储过程--见下列表:
存储过程                                用途
sysmail_configure_sp             修改Database Mail配置
sysmail_add_account_sp           添加Database Mail账户
sysmail_add_profile_sp           添加Database Mail配置文件
sysmail_add_profileaccount_sp    将Database Mail账户添加到配置文件中
sysmail_add_principalprofile_sp  授予用户使用配置文件的权限
sysmail_start_sp                 启动Database Mail外部进程和Service Broker队列
sysmail_stop_sp                  停止Database Mail外部进程和Service Broker队列
sysmail_helpstatus_sp            侦测Database Mail当前状态
如何利用脚本代码配置Database Mail、利用Database Mail发送邮件呢?
SQL Server 2005中的邮件服务
--Send Database Mail with dedicated profile
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Public Profile',
    @recipients = '[email protected]',
    @subject = 'Test Mail',
    @body = 'This is a test mail!'  全选这条语句--按执行之后就发送一封邮件了  打开Outlook Express--按发送/接收--在收件箱里面可以看到这封邮件了 双击打开它 可以看到邮件的内容了-->This is a test mail!
Database Mail的数据存储: 元数据-->配置文件、安全信息及配置数据 在MSDB数据库中存储 以"sysmail_"为前缀的13张表
                                  相关数据-->消息对象和数据 Service Broker对象 在Mail Host数据库中存储 审核表(sysmail_mailitems) 日志表(sysmail_log) 存储过程
配置文件安全性: 公用配置文件和专用配置文件 公用配置文件对所有用户可用 专用配置文件仅对特殊用户可用 专用配置文件可与多个用户相关联 用户可与多个配置文件相关联 每个登录仅能设置一个默认配置文件
系统安全性: 审核信息-->sysmail_sentmail存储所有队列中的消息 每个Mail Host数据库都有自己的审核表  附件安全-->限制附件的扩展名 限制附件的文件尺寸
扩展性: 利用多个配置文件使用多个SMTP服务器为多个应用服务 应用程序可指定使用一个或多个配置文件 配置文件可设置专用的账户或多个账户
账户的故障转移: 一个配置文件中指定多个账户 每个账户都指定故障转移的序号 当某个账户超时失效后,配置文件自动使用下个可用的账户
Database Mail排错: 确认Database Mail已启用 确认用户是否正确配置 确认Database Mail已启动 确认故障影响范围
SQL Mail: 基于MAPI配置文件 SQL Server
SQL Mail相关存储过程-->见下列表:
存储过程                    用途
xp_startmail          启动SQL Mail服务
xp_stopmail           停止SQL Mail服务
xp_findnextmsg        查找最后一封收到的邮件
xp_readmail           读取邮件内容
xp_deletemail         删除邮件
xp_sendmail           发送邮件
sp_processmail        利用xp_findnextmsg,xp_readmail和xp_sendmail处理基于邮件的查询,并返回结果集给用户
SQL Mail排错: 确认MAPI客户端在SQL Server服务器上已安装 确认为SQL Server服务和SQL Agent服务的服务账号正确配置了MAPI配置文件 已经设置MAPI客户端为邮件的默认程序
SQL Agent Mail: 选择SQL Mail或Database Mail 作为Alert System的一部分
SQL Mail和Database Mail的对比-->见下列表:
                    SQL Mail      Database Mail
支持邮件接受        支持            不支持
支持邮件发送        支持             支持
是否需要额外组件   需要            不需要
是否支持故障转移   不支持            支持
是否支持负载均衡   不支持            支持
后以邮件技术        MAPI             SMTP

本文转自 叶俊生 51CTO博客,原文链接:http://blog.51cto.com/yejunsheng/160959