Bien que cette valeur soit enregistrée dans le cadre de l'étape du travail, je ne trouve aucune preuve que la valeur est utilisée.
Si je fixe la valeur en ajoutant le paramètre , @os_run_priority = X
à EXEC msdb.dbo.sp_update_jobstep
, alors il apparaît correctement dans la os_run_priority
colonne de msdb.dbo.sysjobsteps
.
J'ai créé un travail en 2 étapes: une étape T-SQL et une étape du système d'exploitation (CmdExec). Je suppose qu'il est plus probable qu'une option telle que "OS Run Priority" affecte une étape CmdExec, mais il est bon de tester les deux.
Chaque étape a fait en WAITFOR DELAY '00:00:30.000'
sorte qu'elle traîne pendant que je regarde les processus en cours d'exécution pour voir si la priorité a changé.
J'ai vérifié les processus en utilisant Process Explorer . Pour autant que je peux dire, les valeurs (et j'ai essayé 1
, 15
et -1
) n'a aucun effet. J'ai essayé d'utiliser SQL Server 2012 et 2016 sur Windows 10.
J'ai également essayé sur SQL Server 2008 R2 fonctionnant sous Windows XP. Je n'ai encore vu aucune indication de cette propriété ayant un effet sur le processus SQLAGENT ou le processus SQLCMD (que j'utilisais à l'étape CmdExec pour rappeler dans SQL Server pour le faire WAITFOR DELAY
).
Bien sûr, il convient de noter que le processus lui-même a besoin de certaines autorisations pour modifier le niveau de priorité d'un thread. Lorsque l'agent SQL Server s'exécute en tant que compte système local, il peut ne pas disposer de tels droits. Cependant, j'ai testé (SQL Server 2016 uniquement) en utilisant ma propre connexion Windows comme compte de service pour l'agent SQL Server, et je n'ai vu aucune indication de l'utilisation de cette propriété.