Apakah @os_run_priority di sp_add_jobstep benar-benar berfungsi di SQL Server 2008 R2?


13

Apakah @os_run_prioritydi sp_add_jobstepsebenarnya bekerja, di SQL Server 2008 R2?

Ini digambarkan sebagai "milik" atau "tidak berdokumen". Namun, saya melihatnya dalam sp_add_jobstepdefinisi:

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

Saya menduga bahwa ini hanya melaporkan @os_run_priority yang digunakan, daripada memberi Anda kesempatan untuk mempengaruhi prioritas. Jika demikian, teks hanya membantu Anda mengetahui prioritas apa yang digunakan.
RLF

Jawaban:


11

Ini adalah bagian dari definisi langkah kerja dan Anda bahkan dapat melihatnya memiliki nilai yang digunakan atau ditentukan di area lain.

Setelah melihat pada kode sumber (saya bekerja di Microsoft dan memiliki akses), sementara nilainya memang diteruskan sebagai bagian dari informasi langkah pekerjaan yang dikirim ke setiap subsistem, saya tidak dapat menemukan tempat yang benar-benar menetapkan nilai sebagai bagian pelaksanaan langkah pekerjaan. Namun, ada utas yang menjalankan dalam tingkat prioritas yang berbeda sebagai bagian dari SQL Server Agent dan utas itu mungkin atau mungkin tidak membantu dengan fungsi langkah kerja atau subsistem yang mengisi peran tertentu.

Meskipun saya tidak melakukan pemeriksaan lengkap, akan lebih baik untuk mengasumsikan nilai ini - seperti yang dijelaskan - "dicadangkan". Hanya karena tampaknya tidak digunakan, bukan berarti tidak bisa pada titik lain karena ada pipa ledeng.


4

Sementara nilai ini disimpan sebagai bagian dari langkah pekerjaan, saya tidak dapat menemukan bukti bahwa nilai tersebut digunakan.

Jika saya menetapkan nilai dengan menambahkan parameter , @os_run_priority = Xke EXEC msdb.dbo.sp_update_jobstep, maka itu muncul dengan benar di os_run_prioritykolom msdb.dbo.sysjobsteps.

Saya menciptakan pekerjaan dengan 2 langkah: satu langkah T-SQL dan satu langkah Sistem Operasi (CmdExec). Saya berasumsi bahwa lebih mungkin bahwa opsi seperti "os run priority" akan memengaruhi langkah CmdExec, tetapi baik untuk menguji keduanya.

Setiap langkah melakukan WAITFOR DELAY '00:00:30.000'sehingga akan menggantung sementara saya melihat proses yang berjalan untuk melihat apakah prioritas telah berubah.

Saya memeriksa proses menggunakan Process Explorer . Sejauh yang saya tahu, nilai-nilai (dan saya mencoba 1, 15dan -1) tidak berpengaruh. Saya mencoba menggunakan SQL Server 2012 dan 2016 pada Windows 10.

Saya juga mencoba SQL Server 2008 R2 yang berjalan di Windows XP. Saya lagi melihat tidak ada indikasi properti ini memiliki efek pada proses SQLAGENT atau proses SQLCMD (yang saya gunakan pada langkah CmdExec untuk memanggil kembali ke SQL Server untuk melakukan WAITFOR DELAY).

Tentu saja, perlu dicatat bahwa proses itu sendiri membutuhkan izin tertentu untuk mengubah tingkat prioritas utas. Ketika agen SQL Server berjalan sebagai akun Sistem Lokal, mungkin tidak memiliki hak seperti itu. Namun, saya melakukan tes (hanya SQL Server 2016) menggunakan Windows Login saya sendiri sebagai akun layanan untuk agen SQL Server, dan tidak melihat indikasi properti ini sedang digunakan.


1
Itu diteruskan dalam struktur pekerjaan untuk setiap subsistem dan setiap subsistem bertanggung jawab untuk memilih apa yang dilakukannya dengan ini. Saya tidak bisa menemukan subsistem yang mengimplementasikan kode seperti itu pada patch w / terminal 2008R2.
Sean Gallardy

@SeanGallardy Tom memperbarui jawaban Anda dengan bagian yang hilang yang menyelesaikan semua masalah :-). Saya tidak tahu Anda memiliki akses ke sumbernya, dan seringkali cukup banyak orang menyatakan hal-hal dengan sangat percaya diri / empatik, seolah-olah ada pengetahuan langsung yang diamati, namun itu hanya tebakan terbaik. Saya telah memutakhirkan jawaban Anda, tetapi akan tetap menjaga jawaban saya karena memberikan beberapa info tambahan tentang prioritas serta cara menyelidiki masalah serupa.
Solomon Rutzky
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.