@os_run_priority ใน sp_add_jobstep ใช้งานได้จริงใน SQL Server 2008 R2 หรือไม่


13

ไม่@os_run_priorityในsp_add_jobstepการทำงานจริงใน SQL Server 2008 R2?

มันอธิบายว่า "สงวน" หรือ "ไม่มีเอกสาร" อย่างไรก็ตามฉันเห็นในsp_add_jobstepนิยาม:

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

ฉันสงสัยว่านี่เป็นเพียงการรายงาน @os_run_priority ที่ใช้แทนที่จะให้โอกาสคุณที่จะมีอิทธิพลกับลำดับความสำคัญ หากเป็นเช่นนั้นข้อความจะช่วยให้คุณทราบว่ามีการใช้ลำดับความสำคัญเท่าใด
RLF

คำตอบ:


11

นี่เป็นส่วนหนึ่งของนิยามขั้นตอนงานและคุณอาจเห็นว่ามีค่าที่ใช้หรือกำหนดไว้ในพื้นที่อื่น

หลังจากดูในซอร์สโค้ด (ฉันทำงานที่ Microsoft และเข้าถึงได้) ในขณะที่ค่านั้นถูกส่งผ่านเป็นส่วนหนึ่งของข้อมูลขั้นตอนงานที่ส่งไปยังแต่ละระบบย่อยฉันไม่สามารถหาสถานที่ที่ตั้งค่าเป็นส่วนจริงได้ ของการดำเนินการตามขั้นตอนงาน อย่างไรก็ตามมีเธรดที่รันในระดับความสำคัญที่แตกต่างกันซึ่งเป็นส่วนหนึ่งของ SQL Server Agent และเธรดเหล่านั้นอาจหรือไม่อาจช่วยในการทำงานขั้นตอนงานหรือระบบย่อยที่เติมบทบาทเฉพาะ

ในขณะที่ฉันไม่ได้ทำการตรวจสอบอย่างละเอียดถี่ถ้วนมันจะปลอดภัยที่สุดที่จะถือว่าค่านี้คือ - ตามที่อธิบายไว้ - "สงวน" เพียงเพราะมันดูเหมือนว่าจะไม่ได้ใช้ไม่ได้หมายความว่ามันจะไม่สามารถอยู่ในจุดอื่น ๆ ได้เนื่องจากระบบประปามีอยู่


4

ในขณะที่ค่านี้ถูกบันทึกไว้เป็นส่วนหนึ่งของขั้นตอนงานฉันไม่พบหลักฐานที่ใช้ค่า

หากฉันตั้งค่าโดยการเพิ่มพารามิเตอร์, @os_run_priority = XไปEXEC msdb.dbo.sp_update_jobstepแล้วมันจะแสดงขึ้นอย่างถูกต้องในคอลัมน์os_run_prioritymsdb.dbo.sysjobsteps

ฉันสร้างงานด้วย 2 ขั้นตอน: หนึ่งขั้นตอน T-SQL และขั้นตอนระบบปฏิบัติการ (CmdExec) ฉันคิดว่าเป็นไปได้ว่าตัวเลือกเช่น "os run priority" จะส่งผลกระทบต่อขั้นตอน CmdExec แต่เป็นการดีที่จะทดสอบทั้งสองอย่าง

แต่ละขั้นตอนทำWAITFOR DELAY '00:00:30.000'เพื่อที่จะไปรอบ ๆ ในขณะที่ฉันดูกระบวนการทำงานเพื่อดูว่ามีการเปลี่ยนแปลงลำดับความสำคัญ

ฉันจะตรวจสอบกระบวนการใช้Process Explorer เท่าที่ผมสามารถบอกได้ค่า (และฉันพยายาม1, 15และ-1) ไม่มีผลกระทบ ฉันลองใช้ทั้ง SQL Server 2012 และ 2016 บน Windows 10

ฉันยังลองบน SQL Server 2008 R2 ที่ทำงานบน Windows XP ฉันไม่เห็นตัวบ่งชี้ของคุณสมบัตินี้อีกครั้งว่ามีผลกระทบใด ๆ ต่อกระบวนการ SQLAGENT หรือกระบวนการ SQLCMD (ซึ่งฉันใช้ในขั้นตอน CmdExec เพื่อโทรกลับไปยัง SQL Server เพื่อทำเช่นนั้นWAITFOR DELAY)

แน่นอนว่าควรสังเกตว่ากระบวนการต้องการสิทธิ์บางอย่างเพื่อเปลี่ยนระดับความสำคัญของเธรด เมื่อเอเจนต์ SQL Server ทำงานเป็นบัญชี Local System อาจไม่มีสิทธิ์ดังกล่าว อย่างไรก็ตามฉันได้ทำการทดสอบ (SQL Server 2016 เท่านั้น) โดยใช้การเข้าสู่ระบบ Windows ของฉันเองเป็นบัญชีบริการสำหรับเอเจนต์ SQL Server และไม่เห็นสิ่งบ่งชี้ว่ามีการใช้คุณสมบัตินี้


1
มันถูกส่งผ่านในโครงสร้างงานไปยังแต่ละระบบย่อยและแต่ละระบบย่อยมีหน้าที่ในการเลือกสิ่งที่มันทำกับสิ่งนี้ ฉันไม่พบระบบย่อยที่ใช้รหัสดังกล่าวใน 2008R2 w / เทอร์มินัลแพตช์
Sean Gallardy

@SeanGallardy Tom ได้อัปเดตคำตอบของคุณด้วยชิ้นส่วนที่หายไปซึ่งจะช่วยแก้ปัญหาใด ๆ :-) ฉันไม่ทราบว่าคุณมีการเข้าถึงแหล่งข้อมูลและบ่อยครั้งที่ผู้คนมากพอที่จะระบุสิ่งต่าง ๆ อย่างมั่นใจ / เด่นชัดราวกับว่ามีความรู้โดยตรงสังเกตและยังเป็นเพียงการคาดเดาที่ดีที่สุด ฉันอัปเกรดคำตอบของคุณแล้ว แต่จะเก็บคำตอบไว้เพราะจะให้ข้อมูลเพิ่มเติมเกี่ยวกับลำดับความสำคัญรวมถึงวิธีการตรวจสอบปัญหาที่คล้ายกัน
โซโลมอน Rutzky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.