Saltar al contenido

Cómo verificar si el Agente SQL Server se está ejecutando

Posteriormente a consultar especialistas en esta materia, programadores de deferentes ramas y profesores hemos dado con la solución a la interrogande y la dejamos plasmada en este post.

Solución:

En Management Studio, puede verificar si el Agente SQL Server se está ejecutando mirando el nodo del Agente SQL Server en el Explorador de objetos. En la siguiente captura de pantalla, se está ejecutando el Agente SQL Server en mi instancia de SQL Server 2012 (flecha verde superpuesta en el ícono del Agente SQL Server), pero el agente para SQL Server 2000 está detenido (x roja).

ingrese la descripción de la imagen aquí

También puede consultar en Panel de control > Herramientas administrativas > Servicios:

ingrese la descripción de la imagen aquí

O en Archivos de programa > Microsoft SQL Server > Herramientas de configuración > Administrador de configuración:

ingrese la descripción de la imagen aquí

Finalmente, puede verificar el estado usando T-SQL:

DECLARE @agent NVARCHAR(512);

SELECT @agent = COALESCE(N'SQLAgent$' + CONVERT(SYSNAME, SERVERPROPERTY('InstanceName')), 
  N'SQLServerAgent');

EXEC master.dbo.xp_servicecontrol 'QueryState', @agent;

Si se está ejecutando el Agente SQL Server, se mostrará un botón de reproducción verde en la esquina inferior derecha del ícono del Agente SQL Server dentro de SQL Server Management Studio.

Para validar el estado del Agente SQL Server para una instancia determinada mediante T-SQL, ejecute el siguiente fragmento de código:

IF EXISTS (  SELECT 1 
             FROM master.dbo.sysprocesses 
             WHERE program_name = N'SQLAgent - Generic Refresher')
BEGIN
    SELECT @@SERVERNAME AS 'InstanceName', 1 AS 'SQLServerAgentRunning'
END
ELSE 
BEGIN
    SELECT @@SERVERNAME AS 'InstanceName', 0 AS 'SQLServerAgentRunning'
END

Fuente = Colin Stasiuk

La forma más rápida, fácil y directa de determinar si el Agente SQL se está ejecutando, y eso se puede hacer fácilmente en SSMS, es una consulta (por lo tanto, se puede automatizar), y no está consultando una tabla del sistema en desuso (es decir, sysprocesses) o EJECUTANDO xp_servicecontroles un DMV que se introdujo en SP1 para SQL Server 2008 R2:

sys.dm_servidor_servicios

SELECT dss.[status], dss.[status_desc]
FROM   sys.dm_server_services dss
WHERE  dss.[servicename] LIKE N'SQL Server Agent (%';

Devoluciones:

status  status_desc
4       Running

Solo requiere el VIEW SERVER STATE permiso del servidor, pero ya lo necesitaba para ver su estado en Object Explorer (en SSMS).

Y, si no desea otorgar VIEW SERVER STATE a un inicio de sesión en particular porque permite obtener demasiada información adicional, entonces técnicamente no necesita otorgar nada en absoluto, al menos no a un usuario real. Consulte los siguientes dos recursos para obtener detalles completos (incluidos ejemplos prácticos):

  • ¿Qué permisos mínimos debo otorgar a un usuario para que pueda verificar el estado del servicio del Agente SQL Server? (pregunta similar en DBA.StackExchange)
  • Use permisos de alto nivel de forma fácil y segura sin otorgárselos a nadie: nivel de servidor (entrada de blog)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *