Как стать автором
Обновить
1
0
Андрей Ионов @ionofff

Пользователь

Отправить сообщение
Столько заморочек, ради чего? 70рублей в год и нет рекламы в Яндекс почте
Откуда у Вас такое потребление памяти? Сижу на RDM уже много лет и пожалуй лучше нету, у меня в нем всегда по вкладок 10 открыто и больше 200 мегабайт не подымалось использование памяти
а тестовый стенд ест у вас или что то подобное чтобы посмотреть? так как интересно но надо увидеть своими глазами
А какая стоимость такого проекта?
Отличный инструмент STOR2RRD, из коробки почти все может, а если надо чуть больше есть платная редакция
Если Cisco так умеет все ловить, почему она не среди лидеров квадратом Gartner?
Планы обслуживания прекрасно работают без установленного SSIS, а с SSIS можно просто творить чудеса
А чем встроенные средства бекапирования не подходят? Версию express в рассмотрение не беру.
Ваш метод хороший, сам такой использовал пока не столкнулся с проблемой удаленный почтовых ящиков, когда часть пользователей получают почту а часть нет. И как мне кажется с точки зрения заказчиков проще добавить в почтовую группу, чем добавлять в таблицу. Тем более если заказчик крупный обычно добавление в группу даже не админ делают, а выделенный сотрудник какого то отдела.
1) да, туда сразу включаются нужные почтовые адреса
2) у вас будет только один адрес для отправки сообщений, и из логики вашей работы в п. 1-2 вашего алгоритма отпадает надобность, или сводится к гораздо меньшему числу записей, надо просто более глубоко посмотреть как и что вы используете вашим методом.
тут надо работать в команде, я описал случай из своего опыта, когда ваша рассылка работать не будет.
Если почтовый адрес пользователя удаляется на почтовом сервере, то отчет может не до ставится получателям вообще, если их несколько при отправке почты из SQL server. Чтобы решить данную проблему создается группа рассылки на почтовом сервере и уже проблема доставки сообщений ложится на email сервер
Не совсем понятно зачем хранить получателей в таблицах, когда есть группы рассылки для почтовых систем
Можно без создания прямо в агенте сделать задание
IF (SELECT COUNT(*)
FROM sysjobs AS s 
INNER JOIN sysjobsteps AS s2 (nolock) ON s2.job_id = s.job_id
INNER JOIN dbo.sysjobhistory sh (nolock) ON sh.instance_id=(SELECT MAX(sjh.instance_id) FROM dbo.sysjobhistory sjh (nolock) WHERE sjh.job_id=s.job_id AND sjh.step_id=s2.step_id) 
			  AND sh.run_date>=(SELECT MAX(sjh.run_date) FROM dbo.sysjobhistory sjh (nolock) WHERE sjh.job_id=s.job_id AND sjh.step_id=0)
WHERE s.[enabled]=1 AND sh.run_status=0)>0
BEGIN
DECLARE @tableHTML AS NVARCHAR(max)

SET @tableHTML =
    N'<H1>Ошибки в джобах на sql сервере '+@@SERVERNAME+'</H1>' +
    N'<table border="1">' +
    N'<tr><th>Джоб</th><th>ID шага</th>' +
    N'<th>Имя шага</th><th>команда</th><th>база</th>' +
    N'<th>последний запуск</th><th>ошибка</th></tr>' +
    CAST ( ( SELECT td = s.name,'', td = s2.step_id,'', td = s2.step_name, '',td = cast(s2.command AS VARCHAR(100)),'', td = s2.database_name,'',
       td = s2.last_run_date,'', td = cast(sh.[message] AS VARCHAR(100))
FROM sysjobs AS s (nolock)
INNER JOIN sysjobsteps AS s2 (nolock) ON s2.job_id = s.job_id
INNER JOIN dbo.sysjobhistory sh (nolock) ON sh.instance_id=(SELECT MAX(sjh.instance_id) FROM dbo.sysjobhistory sjh (nolock) WHERE sjh.job_id=s.job_id AND sjh.step_id=s2.step_id) 
			  AND sh.run_date>=(SELECT MAX(sjh.run_date) FROM dbo.sysjobhistory sjh (nolock) WHERE sjh.job_id=s.job_id AND sjh.step_id=0)
WHERE s.[enabled]=1 AND sh.run_status=0
--ORDER BY s.name, s2.step_id
FOR XML PATH('tr'), TYPE 
    ) AS NVARCHAR(MAX) ) +
    N'</table>' ;


DECLARE @subject AS NVARCHAR(max)
SET @subject='Ошибка в работе джобов на сервере '+@@SERVERNAME

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'MAIL'
,@recipients = ''
,@subject = @subject
,@importance ='Normal'
,@body =  @tableHTML
,@body_format = 'HTML' 

END

подставив нужных получателей и почтовый профиль

Информация

В рейтинге
Не участвует
Откуда
Рязань, Рязанская обл., Россия
Дата рождения
Зарегистрирован
Активность