Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не получается отловить ошибку  [new]
Sandist
Member

Откуда:
Сообщений: 401
Здравствуйте, помогите пожалуйста разобраться как мне отловить ошибку при отправке сообщения на почту
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


запуск
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					


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


В Begin catch не попадает
select ERROR_MESSAGE() = NULL
select @@ERROR = 0
как так?
1 июн 18, 11:38    [21460388]     Ответить | Цитировать Сообщить модератору
 Re: Не получается отловить ошибку  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
вы руками запускали sp_send_dbmail с вашими параметрами?

из доки:
"Список с разделителями (точки с запятыми), содержащий имена файлов, которые надлежит прикрепить к сообщению.
Файлы в списке должны указываться как абсолютные пути.
"
1 июн 18, 11:57    [21460529]     Ответить | Цитировать Сообщить модератору
 Re: Не получается отловить ошибку  [new]
Sandist
Member

Откуда:
Сообщений: 401
Дедушка,
да, процедура работает нормально
я такое имя файла указал, чтобы сгенерировать ошибку, которую собственно и не могу отловить
1 июн 18, 12:11    [21460629]     Ответить | Цитировать Сообщить модератору
 Re: Не получается отловить ошибку  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Sandist, а хелп читать не барское занятие?
1 июн 18, 12:26    [21460731]     Ответить | Цитировать Сообщить модератору
 Re: Не получается отловить ошибку  [new]
Sandist
Member

Откуда:
Сообщений: 401
buser,

поясните
1 июн 18, 13:10    [21460956]     Ответить | Цитировать Сообщить модератору
 Re: Не получается отловить ошибку  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1341
Sandist,

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

а блок try catch не ловит исключений данной процедуры
1 июн 18, 14:05    [21461306]     Ответить | Цитировать Сообщить модератору
 Re: Не получается отловить ошибку  [new]
Sandist
Member

Откуда:
Сообщений: 401
felix_ff,
ясно/понятно.. этого не знал я и не подумал, что может вообще так быть
так а чем в итоге можно-то?
1 июн 18, 15:05    [21461591]     Ответить | Цитировать Сообщить модератору
 Re: Не получается отловить ошибку  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1341
Sandist,

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

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

можете поискать в интернетах листинг кодов возврата для sp_send_dbmail
1 июн 18, 15:08    [21461611]     Ответить | Цитировать Сообщить модератору
 Re: Не получается отловить ошибку  [new]
Sandist
Member

Откуда:
Сообщений: 401
felix_ff,

так все элементарно оказалось, спасибо огромное
1 июн 18, 15:40    [21461745]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить