Mentre questo valore viene salvato come parte della fase del lavoro, non riesco a trovare alcuna prova che il valore viene utilizzato.
Se imposto il valore aggiungendo il parametro , @os_run_priority = X
a EXEC msdb.dbo.sp_update_jobstep
, viene visualizzato correttamente nella os_run_priority
colonna di msdb.dbo.sysjobsteps
.
Ho creato un lavoro con 2 passaggi: un passaggio T-SQL e un passaggio Sistema operativo (CmdExec). Presumo che sia più probabile che un'opzione come "os run prior" influisca su un passaggio CmdExec, ma è bene testare entrambi.
Ogni passaggio ha fatto in WAITFOR DELAY '00:00:30.000'
modo che restasse in sospeso mentre guardavo i processi in esecuzione per vedere se la priorità fosse cambiata.
Ho controllato i processi utilizzando Process Explorer . Per quanto posso dire, i valori (e ho provato 1
, 15
e -1
) non hanno alcun effetto. Ho provato a utilizzare sia SQL Server 2012 che 2016 su Windows 10.
Ho anche provato su SQL Server 2008 R2 in esecuzione su Windows XP. Ancora una volta non ho visto alcuna indicazione che questa proprietà avesse alcun effetto sul processo SQLAGENT o sul processo SQLCMD (che stavo usando nel passaggio CmdExec per richiamare in SQL Server per fare ciò WAITFOR DELAY
).
Naturalmente, va notato che il processo stesso necessita di determinate autorizzazioni per cambiare il livello di priorità di un thread. Quando l'agente SQL Server è in esecuzione come account di sistema locale, potrebbe non disporre di tali diritti. Tuttavia, ho eseguito il test (solo SQL Server 2016) utilizzando il mio account di accesso di Windows come account del servizio per l'agente SQL Server e non ho visto alcuna indicazione sull'uso di questa proprietà.