Während dieser Wert als Teil des Auftragsschritts gespeichert wird, kann ich keinen Hinweis darauf finden, dass der Wert verwendet wird.
Wenn ich den Wert durch Hinzufügen des Parameters , @os_run_priority = X
zu setze EXEC msdb.dbo.sp_update_jobstep
, wird er in der os_run_priority
Spalte von korrekt angezeigt msdb.dbo.sysjobsteps
.
Ich habe einen Job mit zwei Schritten erstellt: einem T-SQL-Schritt und einem Betriebssystemschritt (CmdExec). Ich gehe davon aus, dass es wahrscheinlicher ist, dass eine Option wie "os run priority" einen CmdExec-Schritt beeinflusst, aber es ist gut, beide zu testen.
Bei jedem Schritt wurde eine ausgeführt WAITFOR DELAY '00:00:30.000'
, damit die Zeit vergeht, während ich die ausgeführten Prozesse betrachtete, um festzustellen, ob sich die Priorität geändert hatte.
Ich habe die Prozesse mit dem Process Explorer überprüft . Soweit ich das beurteilen kann, die Werte (und ich versuchte 1
, 15
und -1
) haben keine Wirkung. Ich habe versucht, SQL Server 2012 und 2016 unter Windows 10 zu verwenden.
Ich habe es auch mit SQL Server 2008 R2 unter Windows XP versucht. Ich sah wieder keinen Hinweis auf diese Eigenschaft, die sich auf den SQLAGENT-Prozess oder den SQLCMD-Prozess auswirkte (den ich im CmdExec-Schritt verwendet habe, um in SQL Server zurückzukehren, um das auszuführen WAITFOR DELAY
).
Natürlich sollte beachtet werden, dass der Prozess selbst bestimmte Berechtigungen benötigt, um die Prioritätsstufe eines Threads zu ändern. Wenn der SQL Server-Agent als lokales Systemkonto ausgeführt wird, verfügt er möglicherweise nicht über solche Rechte. Ich habe jedoch einen Test (nur SQL Server 2016) mit meiner eigenen Windows-Anmeldung als Dienstkonto für den SQL Server-Agenten durchgeführt und keine Anzeige für die Verwendung dieser Eigenschaft erhalten.