sysmail_event_log (Transact-SQL)

数据库邮件系统返回的每个 Windows 或 SQL Server 消息都在视图中占一行。(该上下文中的消息是指错误消息之类的消息,而不是电子邮件。)可使用数据库邮件配置向导的“配置系统参数”对话框或 sysmail_configure_sp 存储过程来配置 Logging Level 参数,以确定返回的消息。

列名

数据类型

说明

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 成员只能查看他们所提交的电子邮件的事件。