科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在SQL Server 2005中使用和管理数据库邮件

在SQL Server 2005中使用和管理数据库邮件

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SQL Server 2005中,出现了一种新的邮件子系统──数据库邮件。数据库邮件与早期的的SQL邮件相比较有了很大的改进。

作者:赛迪网 10363 来源:天新网 2008年3月21日

关键字: 数据库 Mssql SQL SQL Server

  • 评论
  • 分享微博
  • 分享邮件

由于数据库邮件是以队列方式工作的,当我运行上面的命令时将得到一个“邮件已进入队列”的通知邮件。当执行sp_send_dbmail存储过程时邮件并不是立即被发送,而是存储在msdb数据库中的邮件队列里。存储过程的执行触发一个外部邮件过程(DatabaseMail90.exe)的运行。这个可执行程序读入队列中的邮件,把它发送到合适的邮件服务器上。

账号和个人资料的其他用途

有很多不同的方式来利用数据库邮件允许你建立的多个账号和个人资料。

拥有多个账号的一个明显的优势就是来配置你的数据库邮件个人资料以防其中的一个 SMTP服务器出现故障。当添加账号到数据库邮件个人资料时你可以给它们一个序列号。当发送一个新的电子邮件消息时,数据库邮件总是试着先用最低序列号发送。一旦那个账号发送邮件失败的话,数据库邮件就会使用次低的序列号。数据库邮件按这种方式工作直到邮件成功地发送出去或者所有的账号都发送失败。

拥有多个账号和个人资料的另一个有价值的选择是支持拥有不同电子邮件地址邮递的邮件消息。如果你有多个应用需要发送邮件,现在每个应用都可以有它自己的电子邮件地址。这样做有助于自动电子邮件的接收,仅仅看一下电子邮件地址就可区分什么过程发送了这个邮件。

最后,如果你使用私有个人资料的话,你可以把这些个人资料和不同安全原则联系起来。这样做使你能控制哪些msdb用户被允许使用特定的数据库邮件个人资料。

监控数据库邮件

SQL Server在msdb数据库里提供了6种不同的系统视图来监控和返回数据库邮件信息。这些视图可以用来检索msdb数据库里有关所有数据库邮件的状态或者一个特定的电子邮件消息等信息。这些视图用来鉴别哪些邮件被处理了,或者一些邮件消息为什么没有被正确邮递到需求的邮件服务器等方面是非常有用的。这些视图是监控和解决数据库邮件问题的很好的工具。想得到有关这些视图的更多信息,请参考Books Online。

sysmail_allitems – 这个视图返回一个包含了每个被数据库邮件处理过的邮件报文的一行记录的集合。

sysmail_event_log – 这个视图在数据库邮件试图处理一个邮件报文时返回一行Windows或者SQL Server错误信息。

sysmail_faileditems – 这个视图为每个出错的电子邮件报文返回一条记录。

sysmail_mailattachments – 这个视图包含每个发送附件的一行。

sysmail_sentitems – 这个视图包含每个成功发送的电子邮件的一条记录。

sysmail_unsentitems – 这个视图包含每个当前队列待发送或者在发送过程中的邮件的一条

记录。

在MSDB数据库中维护信息

既然所有的电子邮件消息都存储在msdb数据库中,你需要考虑如何管理这些信息.根据你的电子邮件保留政策,你应该定期清理那些不再需要的电子邮件消息. SQL Server 2005提供了两种不同的存储过程来把邮件记录从msdb数据库中移除.

sysmail_delete_mailitems_sp – 这个存储过程从msdb内部数据库邮件表中永久性删除电子邮件消息

sysmail_delete_log_sp – 这个存储过程删除数据库邮件日志消息

Review Books Online for more information on these SP’s.

参考Books Online获取关于这些存储过程的更详细的信息.

下面的T-SQL语句将会删除一个月之前发送的所有邮件:

DECLARE @delete_date datetime
SET @delete_date = dateadd(MM,-1,getdate())
EXECUTE msdb.dbo.sysmail_delete_mailitems_sp 
@sent_before=@delete_date

总结:

在SQL Server 2005中,数据库邮件比起以前版本的SQL Server提供的SQL邮件是一个全新的改进.数据库邮件提供了一个有很多特征的邮件子系统来增强安全性并且使用T-SQL来管理正在发送的邮件.有了 SQL Server 2005中的数据库邮件,你不再需要使用CDOSYS来建立七拼八凑的解决方案, CDOSYS使用旧版的SQL邮件不支持的函数来发送邮件。假如你正在寻找一种从T-SQL上支持电子邮件的方式,则必须要看一下数据库邮件。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章