@Os_run_priority dans sp_add_jobstep fonctionne-t-il réellement dans SQL Server 2008 R2?


13

Est -ce que @os_run_prioritydans le sp_add_jobsteptravail fait, dans SQL Server 2008 R2?

Il est décrit comme "réservé" ou "non documenté". Cependant, je le vois dans la sp_add_jobstepdéfinition:

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

Je soupçonne que cela ne fait que signaler la @os_run_priority qui a été utilisée, plutôt que de vous donner une chance d'influencer la priorité. Si c'est le cas, le texte vous aide simplement à déterminer quelle priorité a été utilisée.
RLF

Réponses:


11

Cela fait partie de la définition de l'étape de travail et vous pouvez même voir qu'il a des valeurs utilisées ou définies dans d'autres domaines.

Après avoir jeté un coup d'œil dans le code source (je travaille chez Microsoft et y ai accès), alors que la valeur est en effet transmise dans le cadre des informations d'étape de travail envoyées à chaque sous-système, je n'ai pas pu trouver un endroit qui définisse réellement la valeur comme faisant partie de l'exécution de l'étape de travail. Il existe cependant des threads qui s'exécutent à différents niveaux de priorité dans le cadre de l'Agent SQL Server et ces threads peuvent ou non aider avec la fonctionnalité d'étape de travail ou les sous-systèmes qui remplissent un rôle spécifique.

Bien que je n'aie pas effectué une vérification exhaustive, il serait préférable de supposer que cette valeur est - comme décrit - "réservée". Ce n'est pas parce qu'il ne semble pas être utilisé qu'il ne peut l'être à aucun autre moment que la plomberie existe.


4

Bien que cette valeur soit enregistrée dans le cadre de l'étape du travail, je ne trouve aucune preuve que la valeur est utilisée.

Si je fixe la valeur en ajoutant le paramètre , @os_run_priority = Xà EXEC msdb.dbo.sp_update_jobstep, alors il apparaît correctement dans la os_run_prioritycolonne de msdb.dbo.sysjobsteps.

J'ai créé un travail en 2 étapes: une étape T-SQL et une étape du système d'exploitation (CmdExec). Je suppose qu'il est plus probable qu'une option telle que "OS Run Priority" affecte une étape CmdExec, mais il est bon de tester les deux.

Chaque étape a fait en WAITFOR DELAY '00:00:30.000'sorte qu'elle traîne pendant que je regarde les processus en cours d'exécution pour voir si la priorité a changé.

J'ai vérifié les processus en utilisant Process Explorer . Pour autant que je peux dire, les valeurs (et j'ai essayé 1, 15et -1) n'a aucun effet. J'ai essayé d'utiliser SQL Server 2012 et 2016 sur Windows 10.

J'ai également essayé sur SQL Server 2008 R2 fonctionnant sous Windows XP. Je n'ai encore vu aucune indication de cette propriété ayant un effet sur le processus SQLAGENT ou le processus SQLCMD (que j'utilisais à l'étape CmdExec pour rappeler dans SQL Server pour le faire WAITFOR DELAY).

Bien sûr, il convient de noter que le processus lui-même a besoin de certaines autorisations pour modifier le niveau de priorité d'un thread. Lorsque l'agent SQL Server s'exécute en tant que compte système local, il peut ne pas disposer de tels droits. Cependant, j'ai testé (SQL Server 2016 uniquement) en utilisant ma propre connexion Windows comme compte de service pour l'agent SQL Server, et je n'ai vu aucune indication de l'utilisation de cette propriété.


1
Il est transmis dans la structure des tâches à chaque sous-système et chaque sous-système est responsable de choisir ce qu'il en fait. Je n'ai pas pu trouver un sous-système qui a implémenté un tel code sur 2008R2 avec des correctifs terminaux.
Sean Gallardy

@SeanGallardy Tom a mis à jour votre réponse avec la pièce manquante qui clarifie toutes les inquiétudes :-). Je ne savais pas que vous aviez accès à la source, et souvent assez de gens déclarent les choses de manière très confiante / catégorique, comme s'il y avait des connaissances directes et observées et pourtant ce n'est qu'une meilleure supposition. J'ai voté pour votre réponse, mais je garderai ma réponse car elle fournira des informations supplémentaires sur les priorités ainsi que sur la façon d'enquêter sur des problèmes similaires.
Solomon Rutzky
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.