sysmail_event_log (Transact-SQL)

适用于:SQL Server

对于数据库邮件系统返回的每个 Windows 或SQL Server消息,都包含一行。 此上下文中的 (消息是指错误消息等消息,而不是电子邮件。) 使用数据库邮件配置向导的“配置系统参数”对话框或sysmail_configure_sp存储过程来配置日志记录级别参数,以确定返回的消息。

列名称 数据类型 说明
Log_id int 日志中项的标识符。
event_type varchar (11) 插入日志中的通告的类型。 可能值为错误、警告、信息性消息、成功消息以及其他内部消息。
log_date datetime 记录日志条目的日期和时间。
description nvarchar(max) 要记录的消息的文本。
process_id int 数据库邮件外部程序的进程 ID。 每当数据库邮件外部程序启动时,该进程 ID 通常都会更改。
mailitem_id int 邮件队列中邮件项的标识符。 如果消息与特定的电子邮件项不相关,则该值为 NULL。
account_id int 与事件相关的帐户的 account_id 。 如果消息与特定的帐户不相关,则该值为 NULL。
last_mod_date datetime 上次修改行的日期和时间。
last_mod_user sysname 上次修改行的用户。 对于电子邮件,这是发送邮件的用户。 对于数据库邮件外部程序生成的消息,这是程序的用户上下文。

备注

排查数据库邮件问题时,请在sysmail_event_log视图中搜索与电子邮件失败相关的事件。 某些消息(例如,数据库邮件外部程序的失败)并不与特定的电子邮件相关。 若要搜索与特定电子邮件相关的错误,请在 sysmail_faileditems 视图中查找失败电子邮件的 mailitem_id ,然后在 sysmail_event_log 中搜索与该 mailitem_id相关的邮件。 当从 sp_send_dbmail 返回错误时,电子邮件不会提交到数据库邮件系统,并且错误不会在此视图中显示。

如果单个帐户传递尝试失败,则在重试过程中数据库邮件将会包含错误消息,直到邮件项传递成功或者失败为止。 如果最终成功,所有累积的错误都会记录为单独的警告,包括 account_id。 这样,即使电子邮件已被发送,也会出现警告。 在最终传递失败的情况下,以前的所有警告都会记录为一条错误消息 ,没有account_id,因为所有帐户都失败了。

权限

必须是 sysadmin 固定服务器角色或 DatabaseMailUserRole 数据库角色的成员才能访问此视图。 不是 sysadmin 角色成员的 DatabaseMailUserRole 成员只能查看他们提交的电子邮件的事件。

另请参阅

sysmail_faileditems (Transact-SQL)
数据库邮件外部程序