Funktioniert @os_run_priority in sp_add_jobstep tatsächlich in SQL Server 2008 R2?

13

Gibt es @os_run_priorityin sp_add_jobsteptatsächlich Arbeit, in SQL Server 2008 R2?

Es wird als "reserviert" oder "undokumentiert" beschrieben. Ich sehe es jedoch in der sp_add_jobstepDefinition:

@os_run_priority INT = 0, -- -15 = Idle, -1 = Below Normal, 0 = Normal, 1 = Above Normal, 15 = Time Critical)
benik9
quelle
Ich würde vermuten, dass dies nur die @os_run_priority angibt, die verwendet wurde, anstatt Ihnen die Chance zu geben, die Priorität zu beeinflussen. In diesem Fall hilft Ihnen der Text nur dabei, herauszufinden, welche Priorität verwendet wurde.
RLF

Antworten:

11

Dies ist Teil der Jobschrittdefinition, und Sie sehen möglicherweise sogar, dass Werte in anderen Bereichen verwendet oder definiert werden.

Nachdem ich mir den Quellcode angesehen habe (ich arbeite bei Microsoft und habe Zugriff), konnte ich keinen Ort finden, an dem der Wert tatsächlich als Teil festgelegt wurde, obwohl der Wert tatsächlich als Teil der an die einzelnen Subsysteme gesendeten Jobschrittinformationen übergeben wurde der Jobschrittausführung. Es gibt jedoch Threads, die als Teil des SQL Server-Agenten in unterschiedlichen Prioritätsstufen ausgeführt werden, und diese Threads können bei der Jobschrittfunktionalität oder bei Subsystemen, die eine bestimmte Rolle ausfüllen, hilfreich sein oder auch nicht.

Ich habe zwar keine vollständige Überprüfung durchgeführt, aber es wäre sicher am besten anzunehmen, dass dieser Wert - wie beschrieben - "reserviert" ist. Nur weil es nicht verwendet zu werden scheint, heißt das noch lange nicht, dass es an keiner anderen Stelle sein kann, da die Rohrleitungen vorhanden sind.

Sean sagt Entfernen Sie Sara Chipps
quelle
4

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 = Xzu setze EXEC msdb.dbo.sp_update_jobstep, wird er in der os_run_prioritySpalte 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, 15und -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.

Solomon Rutzky
quelle
1
Es wird in der Jobstruktur an jedes Subsystem übergeben und jedes Subsystem ist dafür verantwortlich, auszuwählen, was es damit macht. Ich konnte kein Subsystem finden, das solchen Code auf 2008R2 mit Terminal-Patches implementierte.
Sean sagt Entfernen Sara Chipps
@ SeanGallardy Tom hat Ihre Antwort mit dem fehlenden Teil aktualisiert, das alle Bedenken beseitigt :-). Ich wusste nicht, dass Sie Zugriff auf die Quelle haben, und oft genug geben die Leute die Dinge sehr zuversichtlich / nachdrücklich an, als ob es direktes, beobachtetes Wissen gäbe, und doch ist es nur eine beste Vermutung. Ich habe Ihre Antwort positiv bewertet, werde sie jedoch beibehalten, da sie einige zusätzliche Informationen zu Prioritäten sowie zur Untersuchung ähnlicher Probleme enthält.
Solomon Rutzky