APPLIES TO: SQL Server
Azure SQL Database (Managed Instance only)
Azure Synapse Analytics (SQL DW)
Parallel Data Warehouse
Sends an e-mail message to the specified recipients. The message may include a query result set, file attachments, or both. When mail is successfully placed in the Database Mail queue, sp_send_dbmail returns the mailitem_id of the message. This stored procedure is in the msdb database.
Transact-SQL Syntax Conventions
- Syntax
- Arguments
- Return Code Values
- Result Sets
- Remarks
- Permissions
- Что такое Database Mail в MS SQL Server?
- Основные возможности Database Mail
- Настройка компонента Database Mail в MS SQL Server
- Настройка Database Mail с помощью среды Management Studio
- Шаг 1
- Шаг 2
- Шаг 3
- Шаг 4
- Шаг 5
- Шаг 6
- Шаг 7
- Шаг 8
- Шаг 9
- Настройка Database Mail с помощью хранимых процедур языка T-SQL
- Отправка тестового сообщения
- Объекты SQL сервера для работы с Database Mail
- Хранимая процедура для отправки писем msdb.dbo.sp_send_dbmail
- Хранимые процедуры для настройки системных параметров Database Mail: sysmail_configure_sp и sysmail_help_configure_sp
- Системные представления sysmail_allitems, sysmail_sentitems и sysmail_event_log
- Другие хранимые процедуры для работы с компонентом Database Mail
Syntax
Arguments
[ @profile_name = ] ‘profile_name’ Is the name of the profile to send the message from. The profile_name is of type sysname, with a default of NULL. The profile_name must be the name of an existing Database Mail profile. When no profile_name is specified, sp_send_dbmail uses the default private profile for the current user. If the user does not have a default private profile, sp_send_dbmail uses the default public profile for the msdb database. If the user does not have a default private profile and there is no default public profile for the database, @profile_name must be specified.
[ @recipients = ] ‘recipients’ Is a semicolon-delimited list of e-mail addresses to send the message to. The recipients list is of type varchar(max). Although this parameter is optional, at least one of @recipients, @copy_recipients, or @blind_copy_recipients must be specified, or sp_send_dbmail returns an error.
[ @copy_recipients = ] ‘copy_recipients’ Is a semicolon-delimited list of e-mail addresses to carbon copy the message to. The copy recipients list is of type varchar(max). Although this parameter is optional, at least one of @recipients, @copy_recipients, or @blind_copy_recipients must be specified, or sp_send_dbmail returns an error.
[ @blind_copy_recipients = ] ‘blind_copy_recipients’ Is a semicolon-delimited list of e-mail addresses to blind carbon copy the message to. The blind copy recipients list is of type varchar(max). Although this parameter is optional, at least one of @recipients, @copy_recipients, or @blind_copy_recipients must be specified, or sp_send_dbmail returns an error.
[ @from_address = ] ‘from_address’ Is the value of the ‘from address’ of the email message. This is an optional parameter used to override the settings in the mail profile. This parameter is of type varchar(MAX). SMTP security settings determine if these overrides are accepted. If no parameter is specified, the default is NULL.
[ @reply_to = ] ‘reply_to’ Is the value of the ‘reply to address’ of the email message. It accepts only one email address as a valid value. This is an optional parameter used to override the settings in the mail profile. This parameter is of type varchar(MAX). SMTP security settings determine if these overrides are accepted. If no parameter is specified, the default is NULL.
[ @subject = ] ‘subject’ Is the subject of the e-mail message. The subject is of type nvarchar(255). If no subject is specified, the default is ‘SQL Server Message’.
[ @body = ] ‘body’ Is the body of the e-mail message. The message body is of type nvarchar(max), with a default of NULL.
[ @body_format = ] ‘body_format’ Is the format of the message body. The parameter is of type varchar(20), with a default of NULL. When specified, the headers of the outgoing message are set to indicate that the message body has the specified format. The parameter may contain one of the following values:
Defaults to TEXT.
[ @importance = ] ‘importance’ Is the importance of the message. The parameter is of type varchar(6). The parameter may contain one of the following values:
Defaults to Normal.
[ @sensitivity = ] ‘sensitivity’ Is the sensitivity of the message. The parameter is of type varchar(12). The parameter may contain one of the following values:
Defaults to Normal.
[ @file_attachments = ] ‘file_attachments’ Is a semicolon-delimited list of file names to attach to the e-mail message. Files in the list must be specified as absolute paths. The attachments list is of type nvarchar(max). By default, Database Mail limits file attachments to 1 MB per file.
This parameter is not available in Azure SQL Managed Instance because it cannot access local file system.
[ @query = ] ‘query’ Is a query to execute. The results of the query can be attached as a file, or included in the body of the e-mail message. The query is of type nvarchar(max), and can contain any valid Transact-SQL statements. Note that the query is executed in a separate session, so local variables in the script calling sp_send_dbmail are not available to the query.
[ @execute_query_database = ] ‘execute_query_database’ Is the database context within which the stored procedure runs the query. The parameter is of type sysname, with a default of the current database. This parameter is only applicable if @query is specified.
[ @attach_query_result_as_file = ] attach_query_result_as_file Specifies whether the result set of the query is returned as an attached file. attach_query_result_as_file is of type bit, with a default of 0.
When the value is 0, the query results are included in the body of the e-mail message, after the contents of the @body parameter. When the value is 1, the results are returned as an attachment. This parameter is only applicable if @query is specified.
[ @query_attachment_filename = ] query_attachment_filename Specifies the file name to use for the result set of the query attachment. query_attachment_filename is of type nvarchar(255), with a default of NULL. This parameter is ignored when attach_query_result is 0. When attach_query_result is 1 and this parameter is NULL, Database Mail creates an arbitrary filename.
[ @query_result_header = ] query_result_header Specifies whether the query results include column headers. The query_result_header value is of type bit. When the value is 1, query results contain column headers. When the value is 0, query results do not include column headers. This parameter defaults to 1. This parameter is only applicable if @query is specified.
The following error may occur when setting @query_result_header to 0 and setting @query_no_truncate to 1:
Msg 22050, Level 16, State 1, Line 12: Failed to initialize sqlcmd library with error number -2147024809.
[ @query_result_w > Is the line width, in characters, to use for formatting the results of the query. The query_result_width is of type int, with a default of 256. The value provided must be between 10 and 32767. This parameter is only applicable if @query is specified.
[ @query_result_separator = ] ‘query_result_separator’ Is the character used to separate columns in the query output. The separator is of type char(1). Defaults to ‘ ‘ (space).
[ @exclude_query_output = ] exclude_query_output Specifies whether to return the output of the query execution in the e-mail message. exclude_query_output is bit, with a default of 0. When this parameter is 0, the execution of the sp_send_dbmail stored procedure prints the message returned as the result of the query execution on the console. When this parameter is 1, the execution of the sp_send_dbmail stored procedure does not print any of the query execution messages on the console.
[ @append_query_error = ] append_query_error Specifies whether to send the e-mail when an error returns from the query specified in the @query argument. append_query_error is bit, with a default of 0. When this parameter is 1, Database Mail sends the e-mail message and includes the query error message in the body of the e-mail message. When this parameter is 0, Database Mail does not send the e-mail message, and sp_send_dbmail ends with return code 1, indicating failure.
[ @query_no_truncate = ] query_no_truncate Specifies whether to execute the query with the option that avoids truncation of large variable length data types (varchar(max), nvarchar(max), varbinary(max), xml, text, ntext, image, and user-defined data types). When set, query results do not include column headers. The query_no_truncate value is of type bit. When the value is 0 or not specified, columns in the query truncate to 256 characters. When the value is 1, columns in the query are not truncated. This parameter defaults to 0.
When used with large amounts of data, the @query_no_truncate option consumes additional resources and can slow server performance.
[ @query_result_no_padding ] @query_result_no_padding The type is bit. The default is 0. When you set to 1, the query results are not padded, possibly reducing the file size.If you set @query_result_no_padding to 1 and you set the @query_result_width parameter, the @query_result_no_padding parameter overwrites the @query_result_width parameter.
In this case no error occurs.
The following error may occur when setting @query_result_no_padding to 1 and providing a parameter for @query_no_truncate:
Msg 22050, Level 16, State 1, Line 0: Failed to execute the query because the @query_result_no_append and @query_no_truncate options are mutually exclusive.
If you set the @query_result_no_padding to 1 and you set the @query_no_truncate parameter, an error is raised.
[ @mailitem_ > Optional output parameter returns the mailitem_id of the message. The mailitem_id is of type int.
Return Code Values
A return code of 0 means success. Any other value means failure. The error code for the statement that failed is stored in the @@ERROR variable.
Result Sets
On success, returns the message "Mail queued."
Remarks
Before use, Database Mail must be enabled using the Database Mail Configuration Wizard, or sp_configure.
sysmail_stop_sp stops Database Mail by stopping the Service Broker objects that the external program uses. sp_send_dbmail still accepts mail when Database Mail is stopped using sysmail_stop_sp. To start Database Mail, use sysmail_start_sp.
When @profile is not specified, sp_send_dbmail uses a default profile. If the user sending the e-mail message has a default private profile, Database Mail uses that profile. If the user has no default private profile, sp_send_dbmail uses the default public profile. If there is no default private profile for the user and no default public profile, sp_send_dbmail returns an error.
sp_send_dbmail does not support e-mail messages with no content. To send an e-mail message, you must specify at least one of @body, @query, @file_attachments, or @subject. Otherwise, sp_send_dbmail returns an error.
Database Mail uses the Microsoft Windows security context of the current user to control access to files. Therefore, users who are authenticated with SQL Server Authentication cannot attach files using @file_attachments. Windows does not allow SQL Server to provide credentials from a remote computer to another remote computer. Therefore, Database Mail may not be able to attach files from a network share in cases where the command is run from a computer other than the computer that SQL Server runs on.
If both @query and @file_attachments are specified and the file cannot be found, the query is still executed but the e-mail is not sent.
When a query is specified, the result set is formatted as inline text. Binary data in the result is sent in hexadecimal format.
The parameters @recipients, @copy_recipients, and @blind_copy_recipients are semicolon-delimited lists of e-mail addresses. At least one of these parameters must be provided, or sp_send_dbmail returns an error.
When executing sp_send_dbmail without a transaction context, Database Mail starts and commits an implicit transaction. When executing sp_send_dbmail from within an existing transaction, Database Mail relies on the user to either commit or roll back any changes. It does not start an inner transaction.
Permissions
Execute permissions for sp_send_dbmail default to all members of the DatabaseMailUser database role in the msdb database. However, when the user sending the message does not have permission to use the profile for the request, sp_send_dbmail returns an error and does not send the message.
Сегодня в материале мы с Вами рассмотрим компонент Database Mail входящий в состав Microsoft SQL Server, мы узнаем, что это за компонент, как его настроить и, конечно же, как им пользоваться.
Что такое Database Mail в MS SQL Server?
Database Mail – это компонент Microsoft SQL Server, который используется для отправки электронных писем самим SQL сервером. Он появился в MS SQL Server 2005 и доступен в более поздних версиях. До появления Database Mail в SQL сервере существовал компонент SQLMail, который для отправки электронной почты использовал клиент Microsoft Outlook, не входящий в состав SQL Server. Компонент Database Mail взаимодействует с почтовым сервером (SMTP) уже напрямую.
Основные возможности Database Mail
К основным возможностям компонента Database Mail относятся:
- Отправка электронных писем без стороннего клиента;
- Возможность вставлять в письмо результаты запроса;
- Возможность вкладывать файлы в письмо;
- Можно указывать важность сообщения;
- Письма можно посылать сразу на несколько адресов, а также можно указывать адреса, на которые посылать копию;
- Возможность выбора формата письма TEXT или HTML;
- Аудит и ведение журнала отправленных писем;
- Возможность создания множества профилей Database Mail, а также указывать более одного SMTP-сервера;
- Взаимодействие с агентом SQL сервера;
- Возможность ограничивать размер вложений и указывать запрещенные к отправке расширения файлов.
Компонент Database Mail можно использовать в следующих случаях:
- Для отправки сообщений пользователям;
- Для уведомления самого себя, т.е. администратора о различных событиях, произошедших на SQL сервере (выполнение задач, возникновение ошибок).
Настройка компонента Database Mail в MS SQL Server
Для начала хотелось бы сказать, что настраивать Database Mail я буду на примере Microsoft SQL Server 2008 R2. Нижеописанный процесс настройки характерен и для других версий MS SQL сервера, начиная с MS SQL Server 2005.
Прежде чем переходить к настройке Database Mail, необходимо проверить следующее:
- У Вас нужной версии SQL сервер, 2005 или выше (в редакции Express компонента Database Mail нет);
- У Вас есть работающий SMTP сервер и соответствующие настройки этого сервера для отправки писем;
- Вы являетесь членом группы sysadmin на SQL сервере, так как только члены этой группы могут производить настройку Database Mail;
- Отправкой писем в SQL Server занимается программа DatabaseMail.exe (или DatabaseMail90.exe). По умолчанию она расположена в каталоге «C:Program FilesMicrosoft SQL Server…MSSQLBinn». Если у Вас настроен брандмауэр, то в нем необходимо для этой программы разрешить исходящий трафик;
- Также необходимо проверить, включен ли Service Broker на базе ‘msdb’, он необходим для создания очередей писем, используемых компонентом Database Mail, и в случае если он выключен включить его. Это можно сделать, выполнив следующую SQL инструкцию.
Настроить компонент Database Mail на SQL сервере можно разными способами, а именно с использованием среды SQL Server Management Studio и с помощью инструкций T-SQL, мы с Вами рассмотрим оба.
Настройка Database Mail с помощью среды Management Studio
Шаг 1
Открываем Management Studio, в обозревателе объектов открываем объект «Управление» и нажимаем правой кнопкой мыши по пункту «Компонент Database Mail», затем в появившемся меню щелкаем по пункту «Настроить компонент Database Mail».
Шаг 2
В итоге запустится мастер настройки компонента Database Mail, жмем «Далее».
Шаг 3
Затем мы должны будем выбрать задачу по настройке, но настроек пока нет никаких, так как компонент Database Mail мы настраиваем впервые, соответственно выбираем пункт «Установить Database Mail, выполнив следующие задачи», жмем «Далее».
После этого, скорей всего, SQL Server скажет нам, что компонент Database Mail выключен и предложит нам его включить, жмем «Да». Если данного сообщения не появилось, значит, Database Mail был включен ранее.
Шаг 4
На этом шаге нам необходимо создать профиль, указываем его название (я его назвал TestProfile) и, если хотим, описание этого профиля. Также здесь нам нужно добавить учетную запись SMTP сервера, для этого используем кнопку «Добавить».
Шаг 5
И так как учетных записей SMTP сервера в Database Mail у нас нет вообще, у нас сразу откроется окно создания новой учетной записи. Вводим настройки SMTP сервера и нажимаем «OK» (я для примера указал имя учетной записи TestAccount, остальные настройки на скриншоте несуществующие).
Шаг 6
После чего в списке учетных записей SMTP отобразится наша только что созданная учетная запись (в моем случае TestAccount), жмем «Далее».
Шаг 7
А далее мы попадаем в окно настроек безопасности. Здесь на вкладке «Личные профили» мы можем назначить каждому пользователю свой личный профиль. В моем случае этого делать не нужно, мы просто созданный нами ранее профиль делаем открытым и говорим, что он будет по умолчанию, жмем «Далее».
Шаг 8
Затем мы можем настроить системные параметры компонента Database Mail. По названию этих параметров можно определить, за что они отвечают, при необходимости изменяем параметры, и жмем «Далее».
Шаг 9
Это последний шаг, в котором мастер нам выводит список действий, которые будут сейчас выполнены, жмем «Готово».
В итоге будут выполнены все запланированные действия и выведен лог этих действий, жмем «Закрыть».
На этом настройка компонента Database Mail с помощью Management Studio закончена.
Настройка Database Mail с помощью хранимых процедур языка T-SQL
Ниже я представил скрипт, который выполняет такие же действия, как и те действия, которые мы выполняли в графическом интерфейсе чуть ранее. В него я также добавил инструкцию, которая проверяет, включен ли Service Broker на базе msdb.
Также хотелось отметить, что я попытался задействовать все параметры хранимых процедур, с описанием того для чего они нужны, но многие параметры имеют значения по умолчанию и не являются обязательными.
Отправка тестового сообщения
После того как настройка компонента Database Mail закончена, можно проверить его работоспособность путем отправки тестового сообщения. Для более быстрой проверки в среде Management Studio предусмотрен специальный функционал, а именно в обозревателе объектов щелкаем правой кнопкой мыши по компоненту Database Mail и выбираем «Отправить тестовое сообщение…». Затем указываем, кому и жмем «Отправить тестовое сообщение». Если сообщение придет, то это значит, что компонент Database Mail работает.
Для того чтобы пользователь мог сам отправлять почту с помощью компонента Database Mail, необходимо чтобы он был членом роли DatabaseMailUserRole в базе данных msdb. Для добавления пользователю роли можно использовать процедуру sp_addrolemember, например
Объекты SQL сервера для работы с Database Mail
Для работы с компонентом SQL Server Database Mail существует достаточно много полезных объектов на SQL сервере (процедур, представлений) с помощью которых мы можем: отправлять письма, смотреть журнал отправленных писем, а также настраивать сам компонент Database Mail.
Хранимая процедура для отправки писем msdb.dbo.sp_send_dbmail
И начну я, конечно же, с той процедуры, которая позволяет нам отправлять письма – это msdb.dbo.sp_send_dbmail. Ниже я представил SQL инструкцию, в которой отправляю тестовое сообщение, с описанием параметров.
Хранимые процедуры для настройки системных параметров Database Mail: sysmail_configure_sp и sysmail_help_configure_sp
Помните, на этапе настройки компонента Database Mail через Management Studio, у нас была возможность настройки системных параметров, так вот эти параметры можно изменить с помощью процедуры msdb.dbo.sysmail_configure_sp. Процедура msdb.dbo.sysmail_help_configure_sp показывает текущие значения системных параметров. Для примера давайте изменим значение максимального размера вложения на 2 мегабайта.
Системные представления sysmail_allitems, sysmail_sentitems и sysmail_event_log
При работе с электронной почтой в частности с компонентом Database Mail возникает необходимость узнать такие сведения как: какие сообщения были отправлены, когда они были отправлены, какой их статус, а также посмотреть реквизиты всех этих сообщений.
Для этого в SQL сервере существуют специальные представления, которые предоставляют нам всю эту информацию:
- msdb.dbo.sysmail_allitems — просмотр всех сообщений;
- msdb.dbo.sysmail_sentitems – просмотр только отправленных сообщений;
- msdb.dbo.sysmail_unsentitems — просмотр неотправленных сообщений;
- msdb.dbo.sysmail_faileditems – просмотр сообщений с ошибками;
- msdb.dbo.sysmail_event_log – журнал работы компонента Database Mail.
Например, для просмотра всех отправленных сообщений можно использовать следующий запрос:
Другие хранимые процедуры для работы с компонентом Database Mail
Также еще существуют и другие хранимые процедуры для работы с компонентом Database Mail, а именно (некоторые процедуры мы уже использовали в процессе настройки компонента):
- msdb.dbo.sysmail_add_profile_sp — создает новый профиль компонента Database Mail;
- msdb.dbo.sysmail_update_profile_sp — изменят профиль;
- msdb.dbo.sysmail_delete_profile_sp — удаляет профиль;
- msdb.dbo.sysmail_help_profile_sp — показывает существующие профили Database Mail;
- msdb.dbo.sysmail_add_account_sp — создает новую учетную запись компонента Database Mail;
- msdb.dbo.sysmail_update_account_sp — изменят учетную запись;
- msdb.dbo.sysmail_delete_account_sp — удаляет учетную запись;
- msdb.dbo.sysmail_help_account_sp — показывает существующие учетные записи Database Mail;
- msdb.dbo.sysmail_add_profileaccount_sp — подключает учетную запись к профилю компонента Database Mail;
- msdb.dbo.sysmail_update_profileaccount_sp — обновляет порядковый номер учетной записи в профиле компонента Database Mail.
- msdb.dbo.sysmail_delete_profileaccount_sp — удаляет учетную запись из профиля;
- msdb.dbo.sysmail_help_profileaccount_sp – показывает привязки между учетными записями и профилями;
- msdb.dbo.sysmail_add_principalprofile_sp – предоставляет необходимые права доступа к профилю Database Mail
- msdb.dbo.sysmail_update_principalprofile_sp — обновляет данные о взаимосвязи между пользователем или ролью базы данных и профилем;
- msdb.dbo.sysmail_delete_principalprofile_sp — удаляет разрешение пользователя или роли базы данных на использование компонента Database Mail;
- msdb.dbo.sysmail_help_principalprofile_sp — показывает взаимосвязи между профилями компонента Database Mail и участниками базы данных;
- msdb.dbo.sysmail_help_status_sp — показывает состояние компонента Database Mail;
- msdb.dbo.sysmail_start_sp – запускает компонент;
- msdb.dbo.sysmail_stop_sp – останавливает компонент;
- msdb.dbo.sysmail_delete_log_sp — очищает журнал компонента Database Mail;
- msdb.dbo.sysmail_delete_mailitems_sp — удаляет сообщения электронной почты из внутренних таблиц Database Mail.
Более подробную информацию об объектах SQL сервера для работы с компонентом Database Mail можете найти в официальной технической документации.
На этом у меня все, надеюсь, материал был Вам полезен, пока!
ОБЛАСТЬ ПРИМЕНЕНИЯ ЭТОЙ СТАТЬИ: SQL Server (начиная с 2008)
База данных SQL Azure
Хранилище данных SQL Azure
Parallel Data Warehouse
Отправляет сообщение электронной почты указанным получателям. Сообщение может включать результирующий набор запроса, файлы вложений или и то, и другое. Если почта успешно поставлена в очередь компонента Database Mail sp_send_dbmail возвращает mailitem_id сообщения. Эта хранимая процедура находится в msdb базы данных.
Синтаксические обозначения в Transact-SQL
[ @profile_name= ] ‘profile_name‘
Имя профиля, с которого надлежит отослать сообщение. Имя_профиля типа sysname, значение по умолчанию NULL. Имя_профиля должно быть именем существующего профиля компонента Database Mail. Если не Имя_профиля указан, sp_send_dbmail использует личный профиль по умолчанию для текущего пользователя. Если у пользователя нет личного профиля по умолчанию sp_send_dbmail использует открытый профиль по умолчанию для msdb базы данных. Если у пользователя нет личного профиля по умолчанию и нет ни открытого профиля по умолчанию для базы данных, ** @profile_name ** должен быть указан.
[ @recipients= ] ‘recipients‘
Список с разделителями (точки с запятыми), содержащий адреса электронной почты, по которым будут рассылаться сообщения. Список получателей относится к типу varchar(max). Несмотря на то, что этот параметр является необязательным, по крайней мере один из ** @recipients **, ** @copy_recipients **, или ** @blind_copy_recipients ** должен быть указан или sp_send_dbmail возвращает сообщение об ошибке.
[ @copy_recipients= ] ‘copy_recipients‘
Список с разделителями (точки с запятыми), содержащий адреса электронной почты, по которым будут рассылаться копии. Список получателей копий имеет тип varchar(max). Несмотря на то, что этот параметр является необязательным, по крайней мере один из ** @recipients **, ** @copy_recipients **, или ** @blind_copy_recipients ** должен быть указан или sp_send_dbmail возвращает сообщение об ошибке.
[ @blind_copy_recipients= ] ‘blind_copy_recipients‘
Список с разделителями (точки с запятыми), содержащий адреса электронной почты, по которым будут рассылаться скрытые копии. Список получателей скрытых копий имеет тип varchar(max). Несмотря на то, что этот параметр является необязательным, по крайней мере один из ** @recipients **, ** @copy_recipients **, или ** @blind_copy_recipients ** должен быть указан или sp_send_dbmail возвращает сообщение об ошибке.
[ @from_address= ] ‘from_address‘
Значение параметра «адрес отправителя» сообщения электронной почты. Это необязательный параметр, используемый для переопределения параметров в профиле электронной почты. Этот параметр имеет тип varchar(MAX). Параметры безопасности SMTP определяют, будет ли принято переопределение настроек. Если параметр не указан, значение по умолчанию равно NULL.
[ @reply_to= ] ‘reply_to‘
Значение параметра «обратный адрес» сообщения электронной почты. В качестве допустимого значения принимается только один адрес электронной почты. Это необязательный параметр, используемый для переопределения параметров в профиле электронной почты. Этот параметр имеет тип varchar(MAX). Параметры безопасности SMTP определяют, будет ли принято переопределение настроек. Если параметр не указан, значение по умолчанию равно NULL.
[ @subject= ] ‘subject‘
Тема сообщения электронной почты. Субъект имеет тип nvarchar(255). Если тема не указана, то по умолчанию устанавливается «Сообщение SQL Server».
[ @body= ] ‘body‘
Текст сообщения электронной почты. Текст сообщения имеет тип nvarchar(max), значение по умолчанию NULL.
[ @body_format= ] ‘body_format‘
Формат текста сообщения. Параметр имеет тип varchar(20), значение по умолчанию NULL. Если установлено значение этого аргумента, то устанавливаются заголовки исходящих сообщений, что указывает на формат текста сообщения. Аргумент может содержать одно из следующих значений.
По умолчанию имеет значение TEXT.
[ @importance= ] ‘importance‘
Важность сообщения. Параметр имеет тип varchar(6). Аргумент может содержать одно из следующих значений.
По умолчанию имеет значение Normal.
[ @sensitivity= ] ‘sensitivity‘
Пометка сообщения. Параметр имеет тип varchar(12). Аргумент может содержать одно из следующих значений.
По умолчанию имеет значение Normal.
[ @file_attachments= ] ‘file_attachments‘
Список с разделителями (точки с запятыми), содержащий имена файлов, которые надлежит прикрепить к сообщению. Файлы в списке должны указываться как абсолютные пути. Список вложений относится к типу nvarchar(max). По умолчанию компонент Database Mail ограничивает размер файлов вложений до 1 МБ на файл.
[ @query= ] ‘query‘
Запрос, подлежащий выполнению. Результаты запроса могут прикрепляться в виде файла или включаться в текст сообщения электронной почты. Запрос имеет тип nvarchar(max)и может содержать любые допустимые Transact-SQL инструкции. Обратите внимание, что запрос выполняется в отдельном сеансе, так что локальные переменные в скрипте, вызываемом sp_send_dbmail недоступны для запроса.
[ @execute_query_database= ] ‘execute_query_database‘
Контекст базы данных, в котором хранимая процедура запускает запрос. Параметр имеет тип sysname, значение по умолчанию текущей базы данных. Этот параметр применяется, только если ** @query ** указано.
[ ** @attach_query_result_as_file=** ] attach_query_result_as_file
Указывает, возвращается ли результирующий набор запроса как прикрепленный файл. attach_query_result_as_file типа бит, значение по умолчанию 0.
Если значение равно 0, результаты запроса включаются в текст сообщения электронной почты после содержимого ** @body ** параметр. Если установлено значение 1, то результаты возвращаются в виде вложения. Этот параметр применяется, только если ** @query ** указано.
[ ** @query_attachment_filename=** ] query_attachment_filename
Указывает имя файла для результирующего набора вложения запроса. query_attachment_filename типа nvarchar(255), значение по умолчанию NULL. Этот параметр учитывается при attach_query_result — 0. Когда attach_query_result — 1, этот параметр имеет значение NULL, компонент Database Mail создает произвольное имя файла.
[ ** @query_result_header=** ] query_result_header
Указывает, включают ли результаты запроса заголовки столбцов. Query_result_header имеет тип бит. Если значение равно 1, результаты запроса содержат заголовки столбцов. Если установлено значение 0, то результаты запроса не содержат заголовков столбцов. По умолчанию этот параметр 1. Этот параметр применяется, только если ** @query ** указано.
[ @query_result_w > Толщина линии для использования при форматировании результатов запроса (в символах). Query_result_width типа int, значение по умолчанию 256. Его значение должно находиться в диапазоне от 10 до 32767. Этот параметр применяется, только если ** @query ** указано.
[ @query_result_separator= ] ‘query_result_separator‘
Символ, используемый для разделения столбцов в выходных данных запроса. Разделитель имеет тип char(1). Значением по умолчанию является ‘ ‘ (пробел).
[ ** @exclude_query_output=** ] exclude_query_output
Указывает, должен ли результат выполнения запроса возвращаться в сообщении электронной почты. exclude_query_output имеет тип bit и значение по умолчанию 0. Если этот параметр равен 0, выполнение sp_send_dbmail хранимая процедура печатает сообщение, возвращенное в результате выполнения запроса на консоли. Если этот параметр равен 1, выполнение sp_send_dbmail хранимой процедуры не выводятся на печать сообщения выполнения запроса на консоли.
[ @append_query_error= ] append_query_error
Указывает, следует ли отправлять сообщение электронной почты, если запрос, указанный в ошибку ** @query ** аргумент. append_query_error — бит, значение по умолчанию 0. Если аргумент принимает значение 1, то компонент Database Mail посылает сообщение электронной почты и включает сообщение об ошибке запроса в текст сообщения электронной почты. Если этот параметр равен 0, компонент Database Mail не отправляет сообщения электронной почты и sp_send_dbmail заканчивается кодом возврата 1, указывая на неуспешное завершение.
[ @query_no_truncate= ] query_no_truncate
Указывает, следует ли выполнить запрос с параметром, который предотвращает усечение типов данных большой переменной длины (varchar(max), nvarchar(max), varbinary(max), xml, текст, ntext, изображенияи определенных пользователем типов данных). Если значение этого аргумента установлено, то результаты запроса не содержат заголовки столбцов. Query_no_truncate значение имеет тип бит. Если установлено значение 0 или не установлено вовсе, то столбцы в запросе усекаются до 256 символов. Если установлено значение 1, то столбцы в запросе не усекаются. Данный аргумент по умолчанию принимает значение 0.
Примечание |
---|
При использовании с большими объемами данных, @query_no_truncate параметр занимает дополнительные ресурсы и может понизить производительность сервера.
[ @query_result_no_padding ] @query_result_no_padding
Имеет тип bit. Значение по умолчанию равно 0. Если задано значение 1, результаты запроса не дополняются, может сократить размер файла. Если задать @query_result_no_padding 1 и задать @query_result_width параметр, @query_result_no_padding перезаписывает параметр @query_result_width параметр.
Ошибки при этом не возникает.
Если задать @query_result_no_padding 1 и задать @query_no_truncate возникает ошибка параметра.
[ @mailitem_ > Необязательный выходной параметр возвращает mailitem_id сообщения. Mailitem_id типа int.
Код возврата 0 означает успешное завершение. Любое другое значение означает неуспешное завершение. Код ошибки для отчета, который не удалось хранится в @@ERROR переменной.