SQL Server Management Studio (SSMS) içindeki Etkinlik İzleyicisi'nde SQLCLR bekleme türü nedir?


10

SQL Prod sunucumuzu kontrol ettiğimde, Etkinlik Monitörünü her açtığımda SQLCLR, Etkinlik Monitörünün kaynak bekleme bölümündeki ilk listede her zaman görüyorum . Her zaman yüksek bir sayıya sahiptir. Ne SQLCLRiçin? SQLCLREtkinlik izleyicide yüksek kaynak bekleme sayısı olan sunucunun olması kötü mü ?

Yanıtlar:


11

SQLCLR, SQL Server içinde .NET kodu çalıştırma yeteneğidir.

İnsanlar SQLCLR'den bahsettiklerinde genellikle özel .NET kodu (Saklı Yordamlar, İşlevler, Tetikleyiciler, Kullanıcı Tanımlı Türler ve Kullanıcı Tanımlı Toplamalar) yazma yeteneğinden bahseder. Bu durumda, bu yetenek içerisindeki "clr etkin" sunucu seçeneği ile açılıp kapatılabilir sp_configureve bunun Yüzey Alanı Yapılandırma GUI'sinde "CLR Entegrasyonu" olarak adlandırıldığına inanıyorum. .NET işlevselliği eklemek , derlenmiş .NET kodunu SQL Server'a yüklemek için CREATE CEMBLY kullanılmasını gerektirir .

Ancak, "clr etkin" seçeneği 0/ "kapalı" / "devre dışı" olarak ayarlanmış olsa bile , CLR işlevselliği iç işlevler ve bazı yerleşik işlevler için hala kullanılmaktadır ve "Windows fiberlerini kullan" / "olmadığı sürece her zaman orada olacaktır. hafif havuzlama "seçeneği etkin.

SQLCLR'nin ne olduğu, ne olduğu ve ne yapabileceği hakkında çok ayrıntılı bir açıklama için lütfen SQL Server Central: SQLCLR'ye Merdiven Seviye 1: SQLCLR nedir hakkında bu konuda yazdığım makaleye bakın. (bu sitedeki içeriği görüntülemek için ücretsiz kayıt gerekir). Bu makalenin soyulmuş bir sürümü aşağıdaki StackOverflow yanıtında kullanılabilir: Ne zaman SQL Server'da bir CLR işlevine ihtiyacımız var? .

Örneğin, veritabanlarına özel .NET kodunun eklenmesine izin verip vermediğini bilmek istiyorsanız , aşağıdakini çalıştırın ve "run_value" alanını kontrol edin:

EXEC sp_configure 'clr enabled';

Kaynak İzleyicisi'ndeki SQLCLR bekleme türünün anlamı ile ilgili olarak , lütfen aşağıdaki blog yayınına bakın:

Nasıl Çalışır: SQL Server 2008 Etkinlik İzleyicisi'nde SQLCLR bekleme kategorisinin arkasında ne var?

ve bu yazıdan ilgili hattın (baktığınız SQLCLR kategorisine ait olduğu gibi) olduğuna inanıyorum:

Ne buldum beklendiği gibi wait_types birkaç göz ardı edilmesi gerektiğiydi.


Bu SQL2008 ve düzeltilmesi planlandı (bağlantılı makaleye göre). OP, SQL 2012'yi işaretledi. Sadece benim için aynı şeye bakıyorum SQLCLR 3000ms + -1'de sabit oturuyor ve kullanmıyoruz.
Roger Willcocks

@RogerWillcocks Düzeltilmesi planlanan her zaman düzeltileceği anlamına gelmez. Bağlantılı gönderideki yorumları okursanız, 2012 SP1 ve SP2'de hala bir sorun olduğunu bildiren kişilerin göreceksiniz. Hangi SSMS sürümünü kullanıyorsunuz? Gördüklerinizle eşleşip eşleşmediğini görmek için aşağıdakileri (sonraki yorum) çalıştırın. Ayrıca, Geometri, Coğrafya ve Hiyerarşi Kimliği türleri gibi SQLCLR kullanan çeşitli yerleşik özellikler vardır; FORMAT komutu ve diğer bazı şeyler.
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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.