¡Hola, chicos!
¡Buenas tardes!
En esta publicación rápida, le mostraré cómo ejecutar una consulta simple en la vista del sistema msdb.dbo.syssessions para identificar la fecha y hora de inicio de cada instancia del Agente SQL, responsable de controlar y monitorear los trabajos de SQL Server (entre otras cosas).
En un entorno normal, el Agente SQL normalmente se inicia junto con la instancia de SQL Server. No recuerdo haber tenido que detener el Agente SQL manualmente para ningún proceso o mantenimiento. En la gran mayoría de los casos, podemos considerar este historial de inicio del Agente SQL como el historial de inicio de la propia instancia, información muy útil que no conozco otra forma de obtener (a menos que crees una rutina de Auditoría para esto).
Consultar información del historial

Comprobando algunas estadísticas básicas
SELECT
MIN(agent_start_date) AS Dt_Primeira_Inicializacao,
COUNT(*) AS Qt_Inicializacoes,
MAX(agent_start_date) AS Dt_Ultima_Inicializacao
FROM
msdb.dbo.syssessions

Consultar estadísticas un poco más complejas
IF (OBJECT_ID('tempdb..#Dados') IS NOT NULL) DROP TABLE #Dados
SELECT
A.agent_start_date,
DATEDIFF(DAY, B.agent_start_date, A.agent_start_date) AS Qt_Diferenca,
DAY(A.agent_start_date) AS Dia,
DATEPART(HOUR, A.agent_start_date) AS Hora,
DATENAME(WEEKDAY, A.agent_start_date) AS Dia_Semana
INTO
#Dados
FROM
msdb.dbo.syssessions A
JOIN msdb.dbo.syssessions B ON A.session_id = B.session_id + 1
IF (OBJECT_ID('tempdb..#Dia_Mais_Inicializado') IS NOT NULL) DROP TABLE #Dia_Mais_Inicializado
SELECT Dia, COUNT(*) AS Quantidade
INTO #Dia_Mais_Inicializado
FROM #Dados
GROUP BY Dia
IF (OBJECT_ID('tempdb..#Hora_Mais_Inicializada') IS NOT NULL) DROP TABLE #Hora_Mais_Inicializada
SELECT Hora, COUNT(*) AS Quantidade
INTO #Hora_Mais_Inicializada
FROM #Dados
GROUP BY Hora
IF (OBJECT_ID('tempdb..#Dia_Semana_Mais_Inicializado') IS NOT NULL) DROP TABLE #Dia_Semana_Mais_Inicializado
SELECT Dia_Semana, COUNT(*) AS Quantidade
INTO #Dia_Semana_Mais_Inicializado
FROM #Dados
GROUP BY Dia_Semana
DECLARE @Qt_Media_Dias_Entre_Inicializacoes INT = (SELECT AVG(Qt_Diferenca) FROM #Dados)
SELECT
@Qt_Media_Dias_Entre_Inicializacoes AS Qt_Media_Dias_Entre_Inicializacoes,
(SELECT TOP 1 Dia FROM #Dia_Mais_Inicializado ORDER BY Quantidade DESC) AS Qt_Dia_Com_Mais_Inicializacoes,
(SELECT TOP 1 Hora FROM #Hora_Mais_Inicializada ORDER BY Quantidade DESC) AS Qt_Hora_Com_Mais_Inicializacoes,
(SELECT TOP 1 Dia_Semana FROM #Dia_Semana_Mais_Inicializado ORDER BY Quantidade DESC) AS Qt_Dia_Semana_Com_Mais_Inicializacoes

¡Eso es todo, amigos!
¡Hasta la próxima!
Comentários (0)
Carregando comentários…