Apa jenis tunggu SQLCLR di Monitor Aktivitas dalam SQL Server Management Studio (SSMS)?

10

Ketika saya memeriksa server SQL Prod kami, setiap kali saya membuka Monitor Aktivitas saya selalu melihat SQLCLRpada daftar pertama di bagian tunggu sumber daya di Monitor Aktivitas. Selalu memiliki angka tinggi. Untuk apa SQLCLR? Apakah buruk untuk server yang memiliki SQLCLRnomor tunggu sumber daya tinggi di monitor aktivitas?

Keith Rivera
sumber

Jawaban:

11

SQLCLR adalah kemampuan untuk menjalankan kode .NET dalam SQL Server.

Ketika orang berbicara tentang SQLCLR, mereka biasanya merujuk pada kemampuan untuk menulis kode .NET kustom (Prosedur Tersimpan, Fungsi, Pemicu, Jenis yang Ditentukan Pengguna, dan Agregat yang Ditentukan Pengguna). Dalam hal ini, kemampuan ini dapat dinyalakan dan dimatikan melalui opsi server "clr enabled" di dalam sp_configure, dan saya percaya itu disebut "Integrasi CLR" di GUI Konfigurasi Area Permukaan. Menambahkan fungsionalitas .NET memerlukan CREATE ASSEMBLY untuk memuat kode .NET yang dikompilasi ke dalam SQL Server.

Namun, bahkan dengan opsi "clr diaktifkan" diatur ke 0/ "off" / "dinonaktifkan", fungsionalitas CLR masih digunakan untuk fungsionalitas internal dan beberapa fungsi bawaan dan akan selalu ada di sana, kecuali jika "gunakan serat Windows" / " opsi "penyatuan ringan diaktifkan.

Untuk deskripsi yang sangat terperinci tentang apa SQLCLR itu, bukan, dan apa yang bisa dilakukannya, silakan lihat artikel yang saya tulis tentang topik ini di SQL Server Central: Stairway to SQLCLR Level 1: Apa itu SQLCLR? (Pendaftaran gratis diperlukan untuk melihat konten di situs itu). Versi singkat dari artikel itu tersedia di jawaban StackOverflow berikut: Kapan kita membutuhkan fungsi CLR di SQL Server? .

Jika Anda ingin tahu apakah instance memperbolehkan kode .NET kustom untuk ditambahkan ke database, jalankan yang berikut dan periksa bidang "run_value":

EXEC sp_configure 'clr enabled';

Sehubungan dengan arti dari jenis tunggu SQLCLR di Resource Monitor, silakan lihat posting blog berikut:

Bagaimana Cara Kerjanya: Apa yang ada di balik kategori tunggu SQLCLR di SQL Server 2008 Activity Monitor

dan saya percaya garis yang bersangkutan (karena berkaitan dengan kategori SQLCLR yang Anda lihat) dari pos itu adalah:

Apa yang saya temukan adalah bahwa beberapa wait_types harus diabaikan karena mereka menunggu.

Solomon Rutzky
sumber
Itu SQL2008, dan seharusnya dijadwalkan untuk diperbaiki (berdasarkan artikel yang ditautkan). OP telah menandai SQL 2012. Saya hanya melihat hal yang sama dengan saya SQLCLR tetap stabil di 3000ms + -1 dan kami tidak menggunakannya.
Roger Willcocks
@RogerWillcocks Dijadwalkan untuk diperbaiki tidak selalu berarti bahwa itu akan diperbaiki. Jika Anda membaca komentar pada posting tertaut itu, Anda akan melihat orang-orang melaporkan bahwa itu masih menjadi masalah di 2012 SP1 dan SP2. Versi SSMS apa yang Anda gunakan? Jalankan yang berikut (komentar berikutnya) untuk melihat apakah itu cocok dengan apa yang Anda lihat. Selain itu, ada beberapa fitur bawaan yang menggunakan SQLCLR, seperti Geometri, Geografi, dan tipe HierarchyID; perintah FORMAT, dan beberapa hal lainnya.
Solomon 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;
Solomon Rutzky