Поделиться через


Профили Database Mail

Профиль Database Mail является упорядоченной коллекцией связанных учетных записей компонента Database Mail. Для отправки почты пользователь должен быть членом роли DatabaseMailUserRole в базе данных msdb, а также иметь доступ как минимум к одному профилю Database Mail. Профили позволяют администраторам баз данных изменять настройки хранимых процедур и приложений баз данных, пользующихся электронной почтой, без внесения изменений в код приложения. Например на время разработки и тестирования приложения профилю может быть сопоставлен один набор учетных записей электронной почты, а после переноса приложения на рабочий сервер назначен другой. Приложение продолжит использовать профиль с тем же именем, но будет отправлять электронные сообщения согласно другому списку серверов.

ПримечаниеПримечание

Так как компонент Database Mail не использует API-интерфейс передачи сообщений (MAPI), профили Database Mail не являются почтовыми профилями MAPI. Компонент Database Mail не пользуется профилями службы SQL Mail.

Профили повышают надежность в тех случаях, когда сервер электронной почты становится недоступным или не может обрабатывать сообщения. Каждая учетная запись в профиле имеет свой порядковый номер. Порядковый номер определяет очередность, в которой компонент Database Mail использует учетные записи в профиле. Для новых сообщений электронной почты компонент Database Mail использует последнюю учетную запись, с которой было успешно отправлено сообщение, либо учетную запись с наименьшим порядковым номером, если сообщения еще не отправлялись. Если эта учетная запись недоступна, компонент Database Mail использует учетную запись со следующим порядковым номером и так далее, пока либо сообщение не будет успешно отослано, либо при использовании учетной записи с наибольшим порядковым номером также не произойдет ошибка. Если отправка сообщения от имени учетной записи с наибольшим порядковым номером также завершилась ошибкой, то компонент Database Mail приостанавливает попытки отправки сообщения на заданное параметром AccountRetryDelay время хранимой процедуры sysmail_configure_sp. Затем возобновляет их, начиная с учетной записи с наименьшим порядковым номером. Параметр AccountRetryAttempts хранимой процедуры sysmail_configure_sp используется для указания количества попыток отправки сообщений электронной почты, перебирающих все учетные записи указанного профиля.

Если существует несколько учетных записей с одинаковыми порядковыми номерами, компонент Database Mail для отправки сообщения электронной почты использует только одну из них. В этом случае не определено, какой из учетных записей для этого порядкового номера воспользуется компонент Database Mail, и не гарантируется, что для разных сообщений будет использоваться одна и та же учетная запись.

Профили также помогают администраторам управлять доступом к электронной почте. Для отправки сообщений с помощью компонента Database Mail требуется членство в роли DatabaseMailUserRole. Профили позволяют администраторам более гибко управлять доступом к функции отправки сообщений электронной почты и определять, какие учетные записи для этого используются. Для каждого из личных профилей Database Mail хранит список пользователей, которым разрешено пользоваться им при отправке сообщений. Открытые профили доступны пользователям или ролям базы данных msdb, являющимся также членами роли DatabaseMailUserRole.

По умолчанию профиль является личным и не доступен ни одному из пользователей. Чтобы сделать профиль открытым, необходимо предоставить разрешение на доступ к нему пользователю public или пользователю с идентификатором 0. Дополнительные сведения о предоставлении разрешений доступа к профилям см. в разделе sysmail_add_principalprofile_sp (Transact-SQL).

Профиль может быть назначен профилем по умолчанию. В таком случае пользователи могут отправлять сообщения без явного указания профиля, и тогда будет использован профиль по умолчанию. Если пользователь, отсылающий электронное сообщение, имеет личный профиль по умолчанию, то компонент Database Mail использует этот профиль. Если у пользователя нет личного профиля по умолчанию, хранимая процедура sp_send_dbmail будет использовать общедоступный профиль по умолчанию для базы данных. Если не существует ни личного профиля по умолчанию для пользователя, ни открытого профиля по умолчанию для базы данных, sp_send_dbmail возвращает ошибку. Во всех случаях для отправки сообщений с помощью компонента Database Mail пользователь должен быть членом роли DatabaseMailUserRole.