Chociaż ta wartość jest zapisywana jako część etapu zadania, nie mogę znaleźć dowodów na to, że wartość jest używana.
Jeśli ustawię wartość, dodając parametr , @os_run_priority = X
do EXEC msdb.dbo.sp_update_jobstep
, to pokazuje się poprawnie w os_run_priority
kolumnie msdb.dbo.sysjobsteps
.
Utworzyłem zadanie z 2 krokami: jednym krokiem T-SQL i jednym krokiem systemu operacyjnego (CmdExec). Zakładam, że bardziej prawdopodobne jest, że opcja taka jak „priorytet uruchomienia os” wpłynie na krok CmdExec, ale dobrze jest przetestować oba.
Każdy krok robił WAITFOR DELAY '00:00:30.000'
tak, aby zawieszał się, gdy patrzyłem na uruchomione procesy, aby sprawdzić, czy priorytet się zmienił.
Sprawdziłem procesy za pomocą Process Explorera . O ile mogę powiedzieć, wartości (i próbowałem 1
, 15
i -1
) nie mają żadnego wpływu. Próbowałem używać zarówno programu SQL Server 2012, jak i 2016 w systemie Windows 10.
Próbowałem także na SQL Server 2008 R2 z systemem Windows XP. Znów nie widziałem, aby ta właściwość miała jakikolwiek wpływ na proces SQLAGENT lub SQLCMD (którego używałam w kroku CmdExec, aby oddzwonić do SQL Server, aby to zrobić WAITFOR DELAY
).
Oczywiście należy zauważyć, że sam proces wymaga pewnych uprawnień, aby zmienić poziom priorytetu wątku. Gdy agent programu SQL Server działa jako lokalne konto systemowe, może nie mieć takich uprawnień. Jednak przetestowałem (tylko SQL Server 2016), używając własnego logowania do systemu Windows jako konta usługi dla agenta SQL Server, i nie zauważyłem, że ta właściwość jest używana.