Как реализовать создание периодического отчета на почту

Задача: периодически направлять на определенную почту отчет о состоянии объектов в системе. 

Для этого реализуем функциональность по следующей схеме: 

1. Хранимая процедура подготовки данных и формирования результата в виде разметки

2. Вызов внешнего действия с отправкой почты. 

Примеры: 

Готовим данные в хранимой процедуре 1: 

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[as_perf_diag]
	@level int =1,
	@s nvarchar(max) OUTPUT
AS
BEGIN	
declare @t1 table (title nvarchar(max), db nvarchar(256), [desc] nvarchar(max), 
	digit nvarchar(512), important int)
declare @s1 nvarchar(max)=''

-- пример сбора данных 
insert into @t1(title, db, [desc], digit, important)
SELECT TOP 3 
	'Запрос с большим CPU' title, 
	db_name(st.dbID) db,
	substring(st.text, 1, 60)+ '...' [desc],
	cast(qs.total_worker_time/qs.execution_count as nvarchar) AS digit,
	3
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS apply sys.dm_exec_query_plan (qs.plan_handle) AS qp
where qs.total_worker_time >100 
 order by qs.total_worker_time/qs.execution_count desc 


-- ... здесь добавление других результатов в таблицу @t1

-- формируем разметку результата 
select @s= STUFF(( 
select ' <h3>' + db + ' - ' + title + iif(isnull(digit, '')<>'', ' ('+digit +')', '' ) + '</h3>' + 
	 '<p>' + [desc] + '</p>' from (
	select * from @t1
 ) t1 
 order by db, title desc 
  FOR XML PATH, TYPE).value('.[1]','nvarchar(max)' ), 1, 1, '')  

END;

1 раз в день вызываем эту процедуру и отправляем почту через внешнее действие: 

CREATE PROCEDURE [dbo].[falcon_nt_sync_day]
AS
BEGIN
    declare @s nvarchar(max) = ''
    exec [as_perf_diag] @level = 1, @s=@s OUTPUT
	
    if(len(@s)>0) begin     
	     select 'email' type, 'ru@rudensoft.ru' [to], 'Профилактика базы falconspace.ru' subject, @s body
    end 
END

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Планируете делать веб-проект?
Сайт использует Cookie. Правила конфиденциальности OK