@Os_run_priority in sp_add_jobstep funziona effettivamente in SQL Server 2008 R2?


13

Fa @os_run_priorityin sp_add_jobsteprealtà il lavoro, in SQL Server 2008 R2?

È descritto come "riservato" o "non documentato". Tuttavia, lo vedo nella sp_add_jobstepdefinizione:

@os_run_priority INT = 0, -- -15 = Idle, -1 = Below Normal, 0 = Normal, 1 = Above Normal, 15 = Time Critical)

Sospetto che questo stia semplicemente segnalando la @os_run_priority che è stata utilizzata, piuttosto che darti la possibilità di influenzare la priorità. In tal caso, il testo ti sta solo aiutando a capire quale priorità è stata utilizzata.
RLF,

Risposte:


11

Questo fa parte della definizione della fase del lavoro e potresti persino vedere che ha valori utilizzati o definiti in altre aree.

Dopo aver dato un'occhiata al codice sorgente (lavoro in Microsoft e ho accesso), mentre il valore viene effettivamente passato come parte delle informazioni sulla fase del lavoro inviate a ciascun sottosistema, non sono riuscito a trovare un posto che effettivamente imposta il valore come parte dell'esecuzione della fase del lavoro. Esistono, tuttavia, thread che vengono eseguiti in diversi livelli di priorità come parte di SQL Server Agent e tali thread possono o meno aiutare con la funzionalità del passaggio di processo o sottosistemi che ricoprono un ruolo specifico.

Anche se non ho fatto un controllo esaustivo, sarebbe meglio presumere che questo valore sia - come descritto - "riservato". Solo perché non sembra essere usato non significa che non può essere in nessun altro punto in quanto l'impianto idraulico esiste.


4

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 = Xa EXEC msdb.dbo.sp_update_jobstep, viene visualizzato correttamente nella os_run_prioritycolonna 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, 15e -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à.


1
Viene passato nella struttura del lavoro a ciascun sottosistema e ciascun sottosistema è responsabile della scelta di ciò che fa. Non sono riuscito a trovare un sottosistema che implementasse tale codice sulle patch 2008R2 w / terminal.
Sean Gallardy,

@SeanGallardy Tom ha aggiornato la tua risposta con il pezzo mancante che chiarisce eventuali dubbi :-). Non sapevo che avessi accesso alla fonte, e spesso abbastanza persone affermano le cose con molta sicurezza / enfasi, come se ci fosse una conoscenza diretta e osservata, eppure è solo una supposizione. Ho votato a fondo la tua risposta, ma manterrò la mia risposta poiché fornisce alcune informazioni aggiuntive sulle priorità e su come indagare su problemi simili.
Solomon Rutzky, il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.