扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:赛迪网 10363 来源:天新网 2008年3月21日
关键字: 数据库 Mssql SQL SQL Server
由于数据库邮件是以队列方式工作的,当我运行上面的命令时将得到一个“邮件已进入队列”的通知邮件。当执行sp_send_dbmail存储过程时邮件并不是立即被发送,而是存储在msdb数据库中的邮件队列里。存储过程的执行触发一个外部邮件过程(DatabaseMail90.exe)的运行。这个可执行程序读入队列中的邮件,把它发送到合适的邮件服务器上。
账号和个人资料的其他用途
有很多不同的方式来利用数据库邮件允许你建立的多个账号和个人资料。
拥有多个账号的一个明显的优势就是来配置你的数据库邮件个人资料以防其中的一个 SMTP服务器出现故障。当添加账号到数据库邮件个人资料时你可以给它们一个序列号。当发送一个新的电子邮件消息时,数据库邮件总是试着先用最低序列号发送。一旦那个账号发送邮件失败的话,数据库邮件就会使用次低的序列号。数据库邮件按这种方式工作直到邮件成功地发送出去或者所有的账号都发送失败。
拥有多个账号和个人资料的另一个有价值的选择是支持拥有不同电子邮件地址邮递的邮件消息。如果你有多个应用需要发送邮件,现在每个应用都可以有它自己的电子邮件地址。这样做有助于自动电子邮件的接收,仅仅看一下电子邮件地址就可区分什么过程发送了这个邮件。
最后,如果你使用私有个人资料的话,你可以把这些个人资料和不同安全原则联系起来。这样做使你能控制哪些msdb用户被允许使用特定的数据库邮件个人资料。
监控数据库邮件
SQL Server
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语句将会删除一个月之前发送的所有邮件:
|
总结:
在SQL Server 2005中,数据库邮件比起以前版本的SQL Server提供的SQL邮件是一个全新的改进.数据库邮件提供了一个有很多特征的邮件子系统来增强安全性并且使用T-SQL来管理正在发送的邮件.有了 SQL Server 2005中的数据库邮件,你不再需要使用CDOSYS来建立七拼八凑的解决方案, CDOSYS使用旧版的SQL邮件不支持的函数来发送邮件。假如你正在寻找一种从T-SQL上支持电子邮件的方式,则必须要看一下数据库邮件。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者