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).
También puede consultar en Panel de control > Herramientas administrativas > Servicios:
O en Archivos de programa > Microsoft SQL Server > Herramientas de configuración > Administrador de configuración:
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_servicecontrol
es 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)