Será que @os_run_priority
em sp_add_jobstep
realmente trabalho, no SQL Server 2008 R2?
É descrito como "reservado" ou "não documentado". No entanto, eu vejo isso na sp_add_jobstep
definição:
@os_run_priority INT = 0, -- -15 = Idle, -1 = Below Normal, 0 = Normal, 1 = Above Normal, 15 = Time Critical)
sql-server
sql-server-2008-r2
jobs
benik9
fonte
fonte
Respostas:
Isso faz parte da definição da etapa do trabalho e você pode até ver que possui valores usados ou definidos em outras áreas.
Depois de examinar o código-fonte (trabalho na Microsoft e tenho acesso), enquanto o valor é realmente passado como parte das informações da etapa do trabalho enviadas a cada subsistema, não consegui encontrar um local que realmente definisse o valor como parte da execução da etapa do trabalho. No entanto, existem threads executados em diferentes níveis de prioridade como parte do SQL Server Agent e esses threads podem ou não ajudar na funcionalidade da etapa da tarefa ou nos subsistemas que preenchem uma função específica.
Embora eu não tenha feito uma verificação exaustiva, seria melhor assumir que esse valor é - como descrito - "reservado". Só porque não parece ser usado, não significa que não possa ser em nenhum outro momento, pois o encanamento existe.
fonte
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
aEXEC msdb.dbo.sp_update_jobstep
, ele será exibido corretamente naos_run_priority
coluna demsdb.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.
fonte