Aqui você vai ... Esta é a maneira que eu iria sobre isso ... você precisará do DB Mail habilitado e um perfil criado e alterar essas seções de acordo com o seu ambiente abaixo ... também altere a variável @ MaxOfflineInHours = para qualquer quantidade de horas de inatividade em que você gostaria de alertar ... Crie o procedimento armazenado usp_GetExpiringSubscribersList e, em seguida, coloque o script de e-mail abaixo em um job SQL e programe-o. O script de email é projetado para retornar um conjunto de resultados para você por email. Deixe-me saber se você tem algum problema com isso e eu posso trabalhar com isso com você. Deixe-me saber se você precisar de mais alguma coisa. Obrigado! -VM
- ============================================= =================================
Create Procedure dbo.usp_GetExpiringSubscribersList
AS
declare @maxOffLineInHours int
set @maxOffLineInHours = 72 -- <SET YOUR NUMBER OF HOURS TO ALERT ON HERE>
SELECT srvname,
Max_start_time,
DATEDIFF(hh, Max_start_time, getdate())
FROM distribution.dbo.msmerge_sessions
JOIN ( SELECT agent_id,
Max_start_time = MAX(start_time)
FROM distribution.dbo.msmerge_sessions
GROUP BY agent_id
) AS k ON k.agent_id =
distribution.dbo.msmerge_sessions.agent_id
AND distribution.dbo.msmerge_sessions.start_time = max_Start_Time
JOIN ( SELECT id AS agent_id,
srvname
FROM distribution.dbo.msmerge_agents
JOIN sys.sysservers ON sys.sysservers.srvid = distribution.dbo.msmerge_agents.Subscriber_ID
) AS l ON l.agent_id = k.agent_id
WHERE DATEDIFF(hh, max_start_time, GETDATE()) > @maxOffLineInHours
ORDER BY DATEDIFF(hh, max_start_time, GETDATE()) DESC
--====================================================================
-- Put this code in a SQL Job to run daily or whatever interval suits you
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AdventureWorks2008R2 Administrator',
@recipients = '[email protected]',
@query = 'exec dbo.usp_GetExpiringSubscribersList' ,
@subject = 'usp_GetExpiringSubscribersList',
@attach_query_result_as_file = 1 ;