Apakah @os_run_priority
di sp_add_jobstep
sebenarnya bekerja, di SQL Server 2008 R2?
Ini digambarkan sebagai "milik" atau "tidak berdokumen". Namun, saya melihatnya dalam sp_add_jobstep
definisi:
@os_run_priority INT = 0, -- -15 = Idle, -1 = Below Normal, 0 = Normal, 1 = Above Normal, 15 = Time Critical)
sql-server
sql-server-2008-r2
jobs
benik9
sumber
sumber
Jawaban:
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.
sumber
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 = X
keEXEC msdb.dbo.sp_update_jobstep
, maka itu muncul dengan benar dios_run_priority
kolommsdb.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
,15
dan-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.
sumber