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_log。 从sp_send_dbmail返回错误时,电子邮件不会提交到数据库邮件系统,并且错误不会显示在此视图中。
如果单个帐户传递尝试失败,则在重试过程中数据库邮件将会包含错误消息,直到邮件项传递成功或者失败为止。 如果最终成功,所有累积的错误都会记录为单独的警告,包括 account_id。 这样,即使电子邮件已被发送,也会出现警告。 如果最终传递失败,所有以前的警告都会记录为一条错误消息,但没有 account_id,因为所有帐户都失败。
权限
必须是 sysadmin 固定服务器角色的成员或 DatabaseMailUserRole 数据库角色才能访问此视图。 DatabaseMailUserRole 的成员不是 sysadmin 角色的成员,只能查看他们提交的电子邮件的事件。