账号和个人资料的其他用途
有很多不同的方式来利用数据库邮件允许你建立的多个账号和个人资料。
拥有多个账号的一个明显的优势就是来配置你的数据库邮件个人资料以防其中的一个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上支持电子邮件的方式,那么务必要看一下数据库邮件.