Mặc dù giá trị này được lưu dưới dạng một phần của bước công việc, tôi không thể tìm thấy bằng chứng nào cho thấy giá trị được sử dụng.
Nếu tôi đặt giá trị bằng cách thêm tham số , @os_run_priority = X
vào EXEC msdb.dbo.sp_update_jobstep
, thì nó sẽ hiển thị chính xác trong os_run_priority
cột củamsdb.dbo.sysjobsteps
.
Tôi đã tạo một công việc với 2 bước: một bước T-SQL và một bước Hệ điều hành (CmdExec). Tôi giả định rằng nhiều khả năng một tùy chọn như "ưu tiên chạy os" sẽ ảnh hưởng đến bước CmdExec, nhưng thật tốt khi kiểm tra cả hai.
Mỗi bước làm một WAITFOR DELAY '00:00:30.000'
cái để nó sẽ chạy xung quanh trong khi tôi nhìn vào các quy trình đang chạy để xem mức độ ưu tiên đã thay đổi.
Tôi đã kiểm tra các quy trình bằng Process Explorer . Theo như tôi có thể nói, các giá trị (và tôi đã cố gắng 1
, 15
và -1
) không có hiệu lực. Tôi đã thử sử dụng cả SQL Server 2012 và 2016 trên Windows 10.
Tôi cũng đã thử trên SQL Server 2008 R2 chạy trên Windows XP. Tôi một lần nữa thấy không có dấu hiệu nào cho thấy thuộc tính này có bất kỳ ảnh hưởng nào đến quá trình SQLAGENT hoặc quá trình SQLCMD (mà tôi đang sử dụng trong bước CmdExec để gọi lại vào SQL Server để thực hiệnWAITFOR DELAY
).
Tất nhiên, cần lưu ý rằng chính quá trình này cần một số quyền nhất định để thay đổi mức độ ưu tiên của một luồng. Khi đại lý SQL Server đang chạy như tài khoản Hệ thống cục bộ, nó có thể không có quyền như vậy. Tuy nhiên, tôi đã kiểm tra (chỉ dành cho SQL Server 2016) bằng cách sử dụng Đăng nhập Windows của riêng tôi làm tài khoản dịch vụ cho đại lý SQL Server và không thấy dấu hiệu nào của thuộc tính này được sử dụng.