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

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

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

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], 'Профилактика базы falcon.web-automation.ru' subject, @s body
    end 
END

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

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

Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом

Это быстрое внесение изменений

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

адаптация под мобильные устройства. Про юзабилити платформы