SQLCLR to możliwość uruchamiania kodu .NET w SQL Server.
Kiedy ludzie mówią o SQLCLR, zwykle odnoszą się do możliwości pisania niestandardowego kodu .NET (Procedury składowane, funkcje, wyzwalacze, typy zdefiniowane przez użytkownika i agregowane przez użytkownika). W tym przypadku tę zdolność można włączyć i wyłączyć za pomocą opcji serwera „clr enabled” wewnątrz sp_configure
i uważam, że nazywa się to „CLR Integration” w graficznym interfejsie graficznym Surface Area Configuration. Dodanie funkcjonalności .NET wymaga użycia CREATE ASSEMBLY do załadowania skompilowanego kodu .NET do SQL Server.
Jednak nawet z opcją „clr włączony” ustawioną na 0
/ „wyłączony” / „wyłączony”, funkcja CLR jest nadal używana do funkcji wewnętrznych i niektórych wbudowanych funkcji i zawsze będzie dostępna, chyba że „użyj włókien systemu Windows” / ” lightweight pooling ”jest włączona.
Aby uzyskać bardzo szczegółowy opis tego, czym jest SQLCLR, nie jest i co można zrobić, zobacz artykuł, który napisałem na ten temat w SQL Server Central: Schody do SQLCLR Poziom 1: Co to jest SQLCLR? (wymagana jest bezpłatna rejestracja, aby wyświetlić treść na tej stronie). Skrócona wersja tego artykułu jest dostępna w następującej odpowiedzi StackOverflow: Kiedy potrzebujemy funkcji CLR w SQL Server? .
Jeśli chcesz wiedzieć, czy instancja zezwala na dodawanie niestandardowego kodu .NET do baz danych, uruchom następujące polecenie i zaznacz pole „wartość_ Run”:
EXEC sp_configure 'clr enabled';
W odniesieniu do znaczenia typu oczekiwania SQLCLR w Monitorze zasobów zobacz następujący post na blogu:
Jak to działa: Co kryje się za kategorią oczekiwania SQLCLR w Monitorze aktywności programu SQL Server 2008
i uważam, że istotna linia (jak dotyczy kategorii SQLCLR, na którą patrzysz) z tego postu to:
Odkryłem, że kilka typów typu wait należy zignorować, ponieważ są oczekiwane.
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;