Embora esse valor seja salvo como parte da etapa do trabalho, não encontro nenhuma evidência de que o valor seja usado.
Se eu definir o valor adicionando o parâmetro , @os_run_priority = X
a EXEC msdb.dbo.sp_update_jobstep
, ele será exibido corretamente na os_run_priority
coluna de msdb.dbo.sysjobsteps
.
Criei um trabalho com 2 etapas: uma etapa T-SQL e uma etapa do sistema operacional (CmdExec). Suponho que é mais provável que uma opção como "os execute prioridade" afete uma etapa do CmdExec, mas é bom testar as duas.
Cada etapa foi WAITFOR DELAY '00:00:30.000'
executada de forma a ficar pendente enquanto eu olhava os processos em execução para ver se a prioridade havia mudado.
Eu verifiquei os processos usando o Process Explorer . Tanto quanto eu posso dizer, os valores (e eu tentei 1
, 15
e -1
) não têm nenhum efeito. Tentei usar o SQL Server 2012 e 2016 no Windows 10.
Eu também tentei no SQL Server 2008 R2 em execução no Windows XP. Mais uma vez, não vi nenhuma indicação dessa propriedade afetando o processo SQLAGENT ou o SQLCMD (que eu estava usando na etapa CmdExec para ligar novamente para o SQL Server WAITFOR DELAY
).
Obviamente, deve-se notar que o próprio processo precisa de certas permissões para alterar o nível de prioridade de um encadeamento. Quando o agente do SQL Server está sendo executado como a conta Sistema Local, ele pode não ter esses direitos. No entanto, eu testei (apenas SQL Server 2016) usando meu próprio logon do Windows como a conta de serviço do agente do SQL Server e não vi nenhuma indicação dessa propriedade sendo usada.