Si bien este valor se guarda como parte del paso del trabajo, no puedo encontrar evidencia de que se use el valor.
Si configuro el valor agregando el parámetro , @os_run_priority = X
a EXEC msdb.dbo.sp_update_jobstep
, entonces se muestra correctamente en la os_run_priority
columna de msdb.dbo.sysjobsteps
.
Creé un trabajo con 2 pasos: un paso T-SQL y un paso del sistema operativo (CmdExec). Supongo que es más probable que una opción como "prioridad de ejecución del sistema operativo" afecte un paso CmdExec, pero es bueno probar ambos.
Cada paso hizo un paso WAITFOR DELAY '00:00:30.000'
para que permaneciera mientras miraba los procesos en ejecución para ver si la prioridad había cambiado.
Verifiqué los procesos usando Process Explorer . Por lo que yo puedo decir, los valores (y he intentado 1
, 15
y -1
) no tienen ningún efecto. Intenté usar SQL Server 2012 y 2016 en Windows 10.
También probé en SQL Server 2008 R2 que se ejecuta en Windows XP. Nuevamente, no vi ninguna indicación de que esta propiedad tuviera algún efecto en el proceso SQLAGENT o el proceso SQLCMD (que estaba usando en el paso CmdExec para volver a llamar a SQL Server para hacer WAITFOR DELAY
).
Por supuesto, debe tenerse en cuenta que el proceso en sí mismo necesita ciertos permisos para cambiar el nivel de prioridad de un hilo. Cuando el agente de SQL Server se ejecuta como la cuenta del sistema local, es posible que no tenga dichos derechos. Sin embargo, probé (solo SQL Server 2016) usando mi propio inicio de sesión de Windows como la cuenta de servicio para el agente de SQL Server, y no vi ninguna indicación de que esta propiedad fuera utilizada.