SQLCLR ชนิดรอในการตรวจสอบกิจกรรมภายใน SQL Server Management Studio (SSMS) คืออะไร


10

เมื่อฉันตรวจสอบเซิร์ฟเวอร์ SQL Prod ของฉันทุกครั้งที่ฉันเปิดการตรวจสอบกิจกรรมฉันจะเห็นSQLCLRรายการแรกในส่วนรอทรัพยากรในการตรวจสอบกิจกรรม มันมีจำนวนสูงเสมอ มีSQLCLRไว้เพื่ออะไร มันจะไม่ดีสำหรับเซิร์ฟเวอร์ที่SQLCLRมีจำนวนรอทรัพยากรสูงในการตรวจสอบกิจกรรม?

คำตอบ:


11

SQLCLR คือความสามารถในการเรียกใช้รหัส. NET ภายใน SQL Server

เมื่อผู้คนพูดถึง SQLCLR พวกเขามักจะอ้างถึงความสามารถในการเขียนรหัส. NET ที่กำหนดเอง (กระบวนงานที่เก็บไว้ฟังก์ชันทริกเกอร์ประเภทที่กำหนดโดยผู้ใช้และมวลรวมที่ผู้ใช้กำหนด) ในกรณีนี้ความสามารถนี้สามารถเปิดและปิดได้ผ่านตัวเลือกเซิร์ฟเวอร์ของ "เปิดใช้งาน clr" ภายในsp_configureและฉันเชื่อว่าเรียกว่า "การรวม CLR" ใน GUI การตั้งค่าพื้นผิว การเพิ่มฟังก์ชั่น. NET จำเป็นต้องใช้CREATE ASSEMBLYเพื่อโหลดรหัส. NET ที่คอมไพล์ลงใน SQL Server

อย่างไรก็ตามแม้จะมีการตั้งค่าตัวเลือก "เปิดใช้งาน clr" เป็น0/ "ปิด" / "ปิดใช้งาน" ฟังก์ชันการทำงานของ CLR ยังคงใช้สำหรับการทำงานภายในและฟังก์ชั่นในตัวบางอย่างและจะอยู่ที่นั่นเสมอยกเว้น "ใช้เส้นใย Windows" / " เปิดใช้งานตัวเลือก "รวมกำไรเบา"

สำหรับคำอธิบายโดยละเอียดเกี่ยวกับ SQLCLR คืออะไรไม่ได้และสามารถทำอะไรได้โปรดดูบทความที่ฉันเขียนในหัวข้อนี้บน SQL Server Central: Stairway to SQLCLR ระดับ 1: SQLCLR คืออะไร (ต้องลงทะเบียนฟรีเพื่อดูเนื้อหาในเว็บไซต์นั้น) StackOverflow รุ่นต่อไปของบทความนั้นมีอยู่ในคำตอบ StackOverflow ต่อไปนี้: เมื่อใดที่เราต้องการฟังก์ชัน CLR ใน SQL Server .

หากคุณต้องการทราบว่าอินสแตนซ์นั้นอนุญาตให้เพิ่มรหัส. NET ที่กำหนดเองลงในฐานข้อมูลหรือไม่ให้รันต่อไปนี้และตรวจสอบฟิลด์ "run_value":

EXEC sp_configure 'clr enabled';

เกี่ยวกับความหมายของประเภทการรอSQLCLRในการตรวจสอบทรัพยากรโปรดดูโพสต์บล็อกต่อไปนี้:

วิธีการทำงาน: สิ่งที่อยู่เบื้องหลังประเภทการรอ SQLCLR ในการตรวจสอบกิจกรรมของ SQL Server 2008

และฉันเชื่อว่าบรรทัดที่เกี่ยวข้อง (เนื่องจากเกี่ยวข้องกับหมวดหมู่ SQLCLR ที่คุณกำลังดู) จากโพสต์นั้นคือ:

สิ่งที่ฉันพบคือว่า Wait_types หลายรายการควรถูกละเว้นตามที่คาดว่าจะรอ


นั่นคือ SQL2008 และถูกกำหนดเวลาไว้ว่าควรได้รับการแก้ไข (อ้างอิงจากบทความที่เชื่อมโยง) OP ได้ตั้งค่าสถานะ SQL 2012 ฉันแค่มองดูสิ่งเดียวกับฉัน SQLCLR กำลังนิ่งที่ 3000ms + -1 และเราไม่ได้ใช้งาน
Roger Willcocks

@RogerWillcocks กำหนดการที่จะแก้ไขไม่ได้หมายความว่าจะได้รับการแก้ไขเสมอไป หากคุณอ่านความคิดเห็นในโพสต์ที่เชื่อมโยงคุณจะเห็นคนรายงานว่ายังคงเป็นปัญหาในปี 2012 SP1 และ SP2 คุณกำลังใช้ SSMS รุ่นใด เรียกใช้ต่อไปนี้ (ความคิดเห็นถัดไป) เพื่อดูว่าตรงกับสิ่งที่คุณเห็น นอกจากนี้ยังมีคุณสมบัติในตัวหลายอย่างที่ใช้ SQLCLR เช่นประเภทเรขาคณิตภูมิศาสตร์และ HierarchyID ประเภท คำสั่ง FORMAT และสิ่งอื่น ๆ
โซโลมอน Rutzky

2
SELECT * FROM sys.dm_os_wait_stats WHERE wait_type IN ('CLR_AUTO_EVENT', 'CLR_CRST', 'CLR_JOIN', 'CLR_MANUAL_EVENT', 'CLR_MEMORY_SPY', 'CLR_MONITOR', 'CLR_RWLOCK_READER', 'CLR_RWLOCK_WRITER', 'CLR_SEMAPHORE', 'CLR_TASK_START', 'CLRHOST_STATE_ACCESS', 'ASSEMBLY_LOAD', 'FS_GARBAGE_COLLECTOR_SHUTDOWN', 'SQLCLR_APPDOMAIN', 'SQLCLR_ASSEMBLY', 'SQLCLR_DEADLOCK_DETECTION', 'SQLCLR_QUANTUM_PUNISHMENT') ORDER BY wait_time_ms DESC, wait_type ASC;
โซโลมอน Rutzky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.