sysmail_event_log (Transact-SQL)

适用范围:SQL Server

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

列名称 数据类型 描述
Log_id int 日志中项的标识符。
event_type varchar(11) 插入日志中的通告的类型。 可能值为错误、警告、信息性消息、成功消息以及其他内部消息。
log_date datetime 记录日志条目的日期和时间。
说明 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,然后搜索与该mailitem_id相关的邮件sysmail_event_logsp_send_dbmail返回错误时,电子邮件不会提交到数据库邮件系统,并且错误不会显示在此视图中。

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

权限

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

另请参阅

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