powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не получается отловить ошибку
9 сообщений из 9, страница 1 из 1
Не получается отловить ошибку
    #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
Не получается отловить ошибку
    #39653866
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы руками запускали sp_send_dbmail с вашими параметрами?

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

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

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

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

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

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

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

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


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