Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
mezzanine Member Откуда: Сообщений: 157 |
Добрый день. Как можно после вызова sp_send_dbmail узнать его статус? Постоянно, раз в минуту, обращаться к msdb.dbo.sysmail_allitems как то некрасиво. |
8 дек 15, 16:41 [18531062] Ответить | Цитировать Сообщить модератору |
mag2000 Member Откуда: Сообщений: 182 |
mezzanine, Можно просто анализировать значение return code этой ф-ии как пишут в BOOL: https://technet.microsoft.com/en-us/library/ms190307(v=sql.105).aspx
|
||
9 дек 15, 05:32 [18533039] Ответить | Цитировать Сообщить модератору |
mag2000 Member Откуда: Сообщений: 182 |
mag2000, Ошибка: sp_send_dbmail - процедура конечно, а не ф-я |
9 дек 15, 05:34 [18533040] Ответить | Цитировать Сообщить модератору |
mezzanine Member Откуда: Сообщений: 157 |
mag2000, Не совсем то. Эта процедура возвращает статус постановки сообщения (мыла) в очередь. А уж дальше внешняя программа пытается отправить сообщение и там уж могут быть разные статусы. Собственно эта внешняя программа пишет результат еще в одну очередь, после обработки которой обновляется системная таблица msdb.dbo.sysmail_allitems. |
9 дек 15, 11:44 [18534179] Ответить | Цитировать Сообщить модератору |
mezzanine Member Откуда: Сообщений: 157 |
Кстати. Как вариант, на эту таблицу навесил свой триггер:CREATE TRIGGER trig_sysmail_mailitems_test ON dbo.sysmail_mailitems AFTER UPDATE AS BEGIN SET NOCOUNT ON; IF (UPDATE(sent_status)) BEGIN UPDATE GASTRODEV.dbo.mail_mail SET test = i.sent_status FROM GASTRODEV.dbo.mail_mail mm, inserted i WHERE mm.mailitem_id = i.mailitem_id; END; END; GO Но такой подход мне не сильно нравиться. Вешать триггеры на системные таблицы. |
9 дек 15, 11:52 [18534226] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8494 |
mezzanine, если важно получить статус немедленно используйте не SQL средства для рассылки, встроенные в клиентское приложение, например. Непонятно, чего Вы добиваетесь этим контролем. |
11 дек 15, 16:59 [18547711] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |