Sp_add_jobstep'deki @os_run_priority aslında SQL Server 2008 R2'de çalışıyor mu?


13

Does @os_run_priorityiçinde sp_add_jobstepSQL Server 2008 R2 içinde, aslında işin?

"Ayrılmış" veya "belgelenmemiş" olarak tanımlanır. Ancak, sp_add_jobsteptanımında görüyorum :

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

Bunun, önceliği etkileme şansı vermek yerine, yalnızca kullanılan @os_run_priority'yi bildirdiğinden şüpheleniyorum. Öyleyse, metin sadece hangi önceliğin kullanıldığını anlamanıza yardımcı olur.
RLF

Yanıtlar:


11

Bu, iş adımı tanımının bir parçasıdır ve başka alanlarda kullanılmış veya tanımlanmış değerlere sahip olduğunu bile görebilirsiniz.

Kaynak koduna bir göz attıktan sonra (Microsoft'ta çalışıyorum ve erişimim var), değer gerçekten her alt sisteme gönderilen iş adımı bilgilerinin bir parçası olarak geçirilirken, değeri gerçekten bir parçası olarak ayarlayan bir yer bulamadım iş adımı yürütme. Ancak, SQL Server Agent'ın bir parçası olarak farklı öncelik düzeylerinde çalışan iş parçacıkları vardır ve bu iş parçacıkları, belirli bir rolü dolduran iş adımı işlevselliğine veya alt sistemlere yardımcı olabilir veya olmayabilir.

Kapsamlı bir kontrol yapmamış olsam da, bu değerin - açıklandığı gibi - "ayrılmış" olduğunu varsaymak güvenli bir seçim olacaktır. Kullanıldığı görülmemesi, sıhhi tesisatın var olduğu başka bir noktada olamayacağı anlamına gelmez.


4

Bu değer iş adımının bir parçası olarak kaydedilirken, değerin kullanıldığına dair hiçbir kanıt bulamıyorum.

I parametresini ekleyerek değeri ise , @os_run_priority = Xiçin EXEC msdb.dbo.sp_update_jobstep, o zaman doğru bir şekilde göstermektedir os_run_priority, sütun msdb.dbo.sysjobsteps.

Bir T-SQL adımı ve bir İşletim Sistemi (CmdExec) adımı: 2 adımda bir iş yarattım. Ben "os çalışma önceliği" gibi bir seçenek bir CmdExec adım etkilemek daha olası olduğunu, ancak her ikisini de test etmek iyi olduğunu varsayalım.

Her adım WAITFOR DELAY '00:00:30.000', önceliğin değişip değişmediğini görmek için çalışan süreçlere bakarken takılmak için bir adım attı .

Process Explorer'ı kullanarak işlemleri kontrol ettim . Bildiğim kadarıyla söyleyebilirim, değerleri (ve denedim 1, 15ve -1) hiçbir etkisi yoktur. Windows 10'da SQL Server 2012 ve 2016'yı kullanmayı denedim.

Windows XP'de çalışan SQL Server 2008 R2'yi de denedim. Yine bu özellik SQLAGENT işlemi veya SQLCMD işlemi (ki CmdExec adımda yapmak için SQL Server içine geri çağırmak için kullanıyordu) üzerinde herhangi bir etkisi olan hiçbir belirti gördüm WAITFOR DELAY.

Elbette, bir iş parçacığının öncelik düzeyini değiştirmek için sürecin kendisinin belirli izinlere ihtiyacı olduğu unutulmamalıdır. SQL Server aracısı Yerel Sistem hesabı olarak çalışırken, bu tür haklara sahip olmayabilir. Ancak, SQL Server aracısı için hizmet hesabı olarak kendi Windows Oturumumu kullanarak test (yalnızca SQL Server 2016) yaptım ve bu özelliğin kullanıldığına dair hiçbir belirti görmedim.


1
İş yapısında her alt sisteme iletilir ve her alt sistem bununla ne yapacağını seçmekten sorumludur. 2008R2 terminal yamaları üzerinde böyle bir kod uygulayan bir alt sistem bulamadım.
Sean Gallardy

@SeanGallardy Tom, cevabınızı endişeleri gideren eksik parça ile güncelledi :-). Kaynağa erişebildiğinizi bilmiyordum ve çoğu zaman bir şeyleri çok güvenli / empatik bir şekilde, sanki doğrudan, gözlenen bir bilgi varmış gibi söyler ve yine de en iyi tahmindir. Cevabınızı iptal ettim, ancak öncelikler ve benzer sorunların nasıl araştırılacağı hakkında ek bilgi sağladığı için cevabımı saklayacağım.
Solomon Rutzky
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.