Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не получается отловить ошибку / 9 сообщений из 9, страница 1 из 1
01.06.2018, 11:38
    #39653841
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается отловить ошибку
Здравствуйте, помогите пожалуйста разобраться как мне отловить ошибку при отправке сообщения на почту
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
ALTER PROCEDURE [dbo].[send_dbmail_attachment]
 @recipients                 VARCHAR(MAX)  = NULL, 
   @subject                    NVARCHAR(255) = NULL,
   @body                       NVARCHAR(MAX) = NULL, 
   @body_format                VARCHAR(20)   = NULL, 
   @file_attachments           NVARCHAR(MAX) = NULL
    
WITH execute as self
AS
BEGIN
	SET NOCOUNT ON;


EXEC msdb.dbo.sp_send_dbmail  @profile_name = 'SQL01',
                          @recipients = @recipients,
                          @body_format = @body_format,
                          @body = @body,
                          @subject = @subject,
                          @File_attachments = @file_attachments
END



запуск
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
declare @Mail varchar(100) = 'amanat_2007@mail.ru'
,@MessageMAIL varchar(100) = 'wewewew'
,@Subject varchar(100) = 'wewewewe' 
--,@File_attachments varchar (1000) = '\\10.0.0.1\12\0a69044e-1c2e-11e6-badd-005056a00106_cf2b79bc-4af2-4bc7-b194-a35de9644b25.jpg'
,@File_attachments varchar (1000) = 'wefcw'
,@ID_Request bigint 
,@CashID int
,@ID_Type_Processing int = 11
,@keyboard_parameter varchar(1000)
, @keyboard_id int
,@AddDate datetime = getdate()
,@i int
BEGIN TRY

	EXEC @i = msdb.dbo.send_dbmail_attachment  
		  @recipients = @Mail,
		  @body_format = 'HTML' ,
		  @body = @MessageMAIL,
		  @subject = @Subject,
		  @File_attachments = @File_attachments
	select ERROR_MESSAGE()
	select @@ERROR
	insert into SMS_REPL..VideoPhotoOrderSEND_mail_log (date_add
	                                                   ,ID_Type_Processing,mail,body,subject
													   ,File_attachments,par1,ID_Request
													   ,keyboard_id, keyboard_parameter)
	select @AddDate, @ID_Type_Processing, @Mail, @messageMAIL, @Subject, @File_attachments
		  ,case when @ID_Type_Processing = 9 then @CashID else null end, @ID_Request
		  ,@keyboard_id, @keyboard_parameter
END TRY
BEGIN CATCH
	insert into SMS_REPL..VideoPhotoOrderSEND_mail_log (date_add
	                                                   ,ID_Type_Processing,mail,body,subject
													   ,File_attachments,par1,isErr,ID_Request
													   ,keyboard_id, keyboard_parameter)
	select @AddDate, @ID_Type_Processing, @Mail, @messageMAIL, @Subject, @File_attachments
		  ,case when @ID_Type_Processing = 9 then @CashID else null end, 1, @ID_Request
		  ,@keyboard_id, @keyboard_parameter																		   
END CATCH					



ошибка:
Код: sql
1.
2.
Сообщение 22051, уровень 16, состояние 1, строка 0
Недопустимый файл вложения wefcw.



В Begin catch не попадает
select ERROR_MESSAGE() = NULL
select @@ERROR = 0
как так?
...
Рейтинг: 0 / 0
01.06.2018, 11:57
    #39653866
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается отловить ошибку
вы руками запускали sp_send_dbmail с вашими параметрами?

из доки:
" Список с разделителями (точки с запятыми), содержащий имена файлов, которые надлежит прикрепить к сообщению.
Файлы в списке должны указываться как абсолютные пути.
"
...
Рейтинг: 0 / 0
01.06.2018, 12:11
    #39653879
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается отловить ошибку
Дедушка,
да, процедура работает нормально
я такое имя файла указал, чтобы сгенерировать ошибку, которую собственно и не могу отловить
...
Рейтинг: 0 / 0
01.06.2018, 12:26
    #39653899
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается отловить ошибку
Sandist, а хелп читать не барское занятие?
...
Рейтинг: 0 / 0
01.06.2018, 13:10
    #39653938
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается отловить ошибку
buser,

поясните
...
Рейтинг: 0 / 0
01.06.2018, 14:05
    #39653992
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается отловить ошибку
Sandist,

он про то, что в справке написано что код возврата sp_db_sendmail не виляет на значение @@error

а блок try catch не ловит исключений данной процедуры
...
Рейтинг: 0 / 0
01.06.2018, 15:05
    #39654044
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается отловить ошибку
felix_ff,
ясно/понятно.. этого не знал я и не подумал, что может вообще так быть
так а чем в итоге можно-то?
...
Рейтинг: 0 / 0
01.06.2018, 15:08
    #39654047
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается отловить ошибку
Sandist,

используйте return_value от процедуры как советуют сами мелкомягкие.

<> 0 - ошибка
= 0 - ошибки нет

можете поискать в интернетах листинг кодов возврата для sp_send_dbmail
...
Рейтинг: 0 / 0
01.06.2018, 15:40
    #39654076
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается отловить ошибку
felix_ff,

так все элементарно оказалось, спасибо огромное
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не получается отловить ошибку / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]