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, которые они создали сами.