Как я могу установить sp_send_dbmail для отправки результатов запроса по электронной почте?
Мне было поручено создать список умерших пользователей, которые нам нужно архивировать в собственном приложении.
Я написал оператор выбора (SQL Server 2012), и он отлично работает. Я могу получить электронное письмо от EXEC sp_send_dbmail
но в письме есть только строка, которую я вставил в тело. Когда я меняю @body
информация, он все еще использует исходную строку, которую я ввел. То, что я там добавил, не меняется, и я не могу заставить его отправлять результаты Select
,
Вот что у меня так далеко:
Set @Results = 'SELECT p.UID
,p.EMPNO
,p.FULLNAME AS FULL_NAME
,p.Archived
,p.COMPANY
,p.EMAIL
,p.SID
,e.TERMCODE AS TERM_CODE
,CONVERT(VARCHAR, e.FIREDATE, 101) AS FIRE_DATE
FROM app_table p
LEFT OUTER JOIN employee_table e ON e.EMPNO=p.EMPNO
WHERE p.EMPNO IS NOT NULL
AND p.ARCHIVED = 0
AND e.FIREDATE IS NOT NULL
ORDER BY e.FIREDATE DESC'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQL_Mailer',
@recipients = 'my.address@myemail.com',
@subject = 'Departed Users being archived',
@body = @Results
END
Я также попытался добавить @query
к sp_send_dbmail
и положить Select
в @query
: @query = 'Select statement above'
Что мне не хватает?
1 ответ
Вы должны передать запрос в @query
параметр и указать @attach_query_result_as_file=1
, @body
это просто текст, который будет включен в сообщение. Смотрите sp_send_dbmail для более подробной информации. Вы сказали, что пытались это сделать, но не сказали, что произошло, и ваш код этого не делает.
Set @Results = 'SELECT p.UID
,p.EMPNO
,p.FULLNAME AS FULL_NAME
,p.Archived
,p.COMPANY
,p.EMAIL
,p.SID
,e.TERMCODE AS TERM_CODE
,CONVERT(VARCHAR, e.FIREDATE, 101) AS FIRE_DATE
FROM app_table p
LEFT OUTER JOIN employee_table e ON e.EMPNO=p.EMPNO
WHERE p.EMPNO IS NOT NULL
AND p.ARCHIVED = 0
AND e.FIREDATE IS NOT NULL
ORDER BY e.FIREDATE DESC'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQL_Mailer',
@recipients = 'my.address@myemail.com',
@subject = 'Departed Users being archived',
@body = 'You can write something here',
@query = @Results,
@attach_query_result_as_file = 1