Хотя это значение сохраняется как часть шага задания, я не могу найти доказательств того, что это значение используется.
Если я установлю значение, добавив параметр , @os_run_priority = X
в EXEC msdb.dbo.sp_update_jobstep
, то он будет правильно отображаться в os_run_priority
столбце msdb.dbo.sysjobsteps
.
Я создал задание с 2 шагами: один шаг T-SQL и один шаг операционной системы (CmdExec). Я предполагаю, что более вероятно, что такой параметр, как «приоритет запуска ОС», повлияет на шаг CmdExec, но хорошо проверить оба варианта.
Каждый шаг делал WAITFOR DELAY '00:00:30.000'
так, чтобы он зависал, пока я смотрел на запущенные процессы, чтобы увидеть, изменился ли приоритет.
Я проверил процессы с помощью Process Explorer . Насколько я могу сказать, что значения (и я попробовал 1
, 15
и -1
) не имеют никакого эффекта. Я попытался использовать SQL Server 2012 и 2016 на Windows 10.
Я также пробовал на SQL Server 2008 R2, работающем на Windows XP. Я снова не увидел никаких признаков того, что это свойство оказывает какое-либо влияние на процесс SQLAGENT или процесс SQLCMD (который я использовал на шаге CmdExec для обратного вызова SQL Server, чтобы сделать это WAITFOR DELAY
).
Конечно, следует отметить, что самому процессу необходимы определенные разрешения для изменения уровня приоритета потока. Когда агент SQL Server работает как учетная запись локальной системы, он может не иметь таких прав. Однако я провел тестирование (только для SQL Server 2016), используя свою собственную учетную запись Windows в качестве учетной записи службы для агента SQL Server, и не увидел никаких признаков использования этого свойства.