#sql #sql-server #ssms #sql-agent-job
Вопрос:
В основном у меня есть ЗАДАНИЕ SQL , которое запускает процедуру, ответственную за выполнение запроса и отправку электронного письма, с msdb.dbo.sp_send_dbmail
помощью которой, когда я запускаю процедуру, все работает по назначению, и электронное письмо доставляется. Но когда я создал задание в агенте SQL, jos успешно выполняется, но электронное письмо не доставляется.
Рассматриваемая процедура заключается в следующем:
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Active_users', @recipients = 'teste0@teste.com;teste1@teste.com', @subject = 'List', @body = 'Users', @query = 'SELECT Top 1000 [caller_id] ,[session_start_dt] ,[session_end_dt] ,[caller_address] ,[caller_type] FROM [database].[db].[teste1] where session_end_dt IS NULL order by caller_id desc' , @attach_query_result_as_file = 1, @query_attachment_filename = 'users.csv', @query_result_header = 1, @query_result_no_padding = 1, @exclude_query_output = 1;
Моим первым, однако, была проблема с разрешениями, из-за которой у пользователя SQLAgtAct
не было доступа к рассматриваемой базе данных, но у нее есть и есть роль db_datareader
, db_datawriter
, db_ddladmin
. Я не знаю, нужно ли пользователю SQLAgtAct больше разрешений, чем это, так как задание выполняется успешно.
Комментарии:
1. Имеет ли учетная запись службы агента SQL Server
DatabaseMailUserRole
эту роль и являетсяActive_users
ли профиль общедоступным, или у нее [учетной записи службы] есть разрешение на отправку электронных писем из этого профиля?2. Вы смотрели на
msdb.dbo.sysmail_event_log
это ?3. Также просмотрите историю заданий агента, чтобы узнать, есть ли ошибки.