sysmail_unsentitems (Transact-SQL)
Содержит по одной строке для каждого сообщения компонента Database Mail с состоянием unsent (неотправлено) или retrying (повторная попытка). Сообщения в неотправленном состоянии или состоянии повторной попытки все еще находятся в очереди и могут быть отправлены в любой момент. Сообщение может находиться в состоянии unsent по следующим причинам:
Сообщение является новым, и, хотя оно было поставлено в очередь сообщений, компонент Database Mail работает над другими сообщениями и еще не дошел до данного сообщения.
Компонент Database Mail не запущен, и никакие сообщения не отправляются.
Сообщение может находиться в состоянии retrying по следующим причинам:
- Компонент Database Mail совершил попытку отправки сообщения, но отсутствует связь с почтовым SMTP-сервером. Компонент Database Mail продолжит попытку отправки сообщения, используя другие учетные записи компонента Database Mail, назначенные профилю, который отправляет сообщение. Если ни одна из учетных записей не может отправить сообщение, компонент Database Mail будет ожидать время, заданное в параметре Задержка повторной попытки учетной записи, и после этого совершит другую попытку отправки сообщения. Компонент Database Mail использует параметр Повторные попытки учетной записи для определения количества повторных попыток отправки сообщения. Сообщения остаются в состоянии retrying все время, пока компонент Database Mail производит попытки отправки сообщения.
Используйте это представление, если хотите увидеть, сколько сообщений ожидает отправки и как долго они находятся в очереди. Обычно число сообщений в состоянии unsent будет небольшим. Проведите оценку производительности во время обычной работы, чтобы определить подходящее для данной конфигурации число сообщений в очереди.
Для просмотра всех сообщений, обработанных компонентом Database Mail, используйте представление sysmail_allitems (Transact-SQL). Для просмотра только сообщений с состоянием ошибки используйте представление sysmail_faileditems (Transact-SQL). Чтобы отображались только отправленные сообщения, следует воспользоваться представлением sysmail_sentitems (Transact-SQL).
Имя столбца |
Тип данных |
Описание |
---|---|---|
mailitem_id |
int |
Идентификатор почтового отправления в очереди почты. |
profile_id |
int |
Идентификатор профиля, использованного для передачи сообщения. |
recipients |
varchar(max) |
Электронные адреса получателей сообщения. |
copy_recipients |
varchar(max) |
Электронные адреса получателей копий сообщения. |
blind_copy_recipients |
varchar(max) |
Электронные адреса получателей копий сообщения, чьи имена не будут отображаться в заголовке сообщения. |
subject |
nvarchar(510) |
Строка темы сообщения. |
body |
varchar(max) |
Тело сообщения. |
body_format |
varchar(20) |
Формат тела сообщения. Возможные значения: TEXT и HTML. |
importance |
varchar(6) |
Параметр importance (приоритет) сообщения. |
sensitivity |
varchar(12) |
Параметр sensitivity (степень конфиденциальности) сообщения. |
file_attachments |
varchar(max) |
Список разделенных точкой с запятой имен файлов, вложенных в сообщение. |
attachment_encoding |
varchar(20) |
Тип почтового вложения. |
query |
varchar(max) |
Запрос, выполненный почтовой программой. |
execute_query_database |
sysname |
Контекст базы данных, в котором почтовая программа выполнила запрос. |
attach_query_result_as_file |
bit |
Если значение равно 0, результаты запроса были включены в тело сообщения после его содержимого. Если значение равно 1, результаты были возвращены в виде вложения. |
query_result_header |
bit |
Если значение равно 1, результаты запроса содержали заголовки столбцов. Если значение равно 0, результаты запроса не включали заголовков столбцов. |
query_result_width |
int |
Параметр query_result_width (ширина вывода результата запроса в символах) сообщения. |
query_result_separator |
char(1) |
Символ, используемый для разделения столбцов в выходных данных запроса. |
exclude_query_output |
bit |
Параметр exclude_query_output сообщения. Дополнительные сведения см. в разделе Хранимая процедура sp_send_dbmail (Transact-SQL). |
append_query_error |
bit |
Параметр append_query_error сообщения. 0 означает, что компонент Database Mail не отсылает электронное сообщение, если в запросе содержится ошибка. |
send_request_date |
datetime |
Дата и время помещения сообщения в очередь почты. |
send_request_user |
sysname |
Пользователь, отправивший сообщение. Это пользовательский контекст почтовой процедуры базы данных, а не поле От сообщения. |
sent_account_id |
int |
Идентификатор учетной записи компонента Database Mail, используемой для отправки этого сообщения. Всегда имеет значение NULL для этого представления. |
sent_status |
varchar(8) |
Статус сообщения. Будет иметь значение unsent, если компонент Database Mail не производил попытки отправить сообщение. Будет иметь значение retrying, если попытка компонента Database Mail отправить сообщение завершилась неудачно и производится повторная попытка отправки. |
sent_date |
datetime |
Дата и время, когда компонент Database Mail последний раз пытался отправить сообщение. Имеет значение NULL, если компонент Database Mail не производил попытки отправки сообщения. |
last_mod_date |
datetime |
Дата и время последнего изменения строки. |
last_mod_user |
sysname |
Пользователь, последний изменивший строку. |
Замечания
При поиске и устранении неполадок в компоненте Database Mail это представление может помочь установить природу проблемы путем отображения числа ожидающих отправки сообщений и продолжительности их ожидания. Если в данный момент сообщения не отправляются, компонент Database Mail может быть не запущен или могут быть проблемы с сетью, что не позволяет компоненту связаться с SMTP-серверами. Если большинство неотправленных сообщений имеют один и тот же идентификатор profile_id, вероятна проблема с SMTP-сервером. Попробуйте добавить дополнительные учетные записи в профиль. Если сообщения отправляются, но на ожидание в очереди тратится много времени, возможно, SQL Server требуется больше ресурсов для обработки необходимого объема сообщений.
Разрешения
Предоставляются предопределенной роли сервера sysadmin и роли базы данных DatabaseMailUserRole. При выполнении членом предопределенной роли сервера sysadmin это представление отображает все сообщения в состоянии unsent и retrying. Все остальные пользователи видят только те сообщения в состоянии unsent или retrying, которые они создали сами.