SQLCLR ist die Fähigkeit, .NET-Code in SQL Server auszuführen.
Wenn Leute von SQLCLR sprechen, beziehen sie sich normalerweise auf die Fähigkeit, benutzerdefinierten .NET-Code zu schreiben (gespeicherte Prozeduren, Funktionen, Trigger, benutzerdefinierte Typen und benutzerdefinierte Aggregate). In diesem Fall kann diese Funktion über die Serveroption "clr enabled" aktiviert sp_configure
und deaktiviert werden. Ich glaube, sie wird in der Benutzeroberfläche für die Oberflächenkonfiguration als "CLR-Integration" bezeichnet. Das Hinzufügen von .NET-Funktionen erfordert die Verwendung von CREATE ASSEMBLY , um den kompilierten .NET-Code in SQL Server zu laden.
Selbst wenn die Option "clr enabled" auf 0
/ "off" / "disabled" gesetzt ist, wird die CLR-Funktionalität weiterhin für interne Funktionen und einige integrierte Funktionen verwendet und ist immer verfügbar, es sei denn, "Windows-Fasern verwenden" / " Lightweight Pooling "Option ist aktiviert.
Eine sehr detaillierte Beschreibung dessen, was SQLCLR ist, was nicht und was es kann, finden Sie in dem Artikel, den ich zu diesem Thema in SQL Server Central geschrieben habe: Treppe zu SQLCLR Ebene 1: Was ist SQLCLR? (Eine kostenlose Registrierung ist erforderlich, um Inhalte auf dieser Website anzuzeigen.) Eine abgespeckte Version dieses Artikels finden Sie in der folgenden StackOverflow-Antwort: Wann benötigen wir eine CLR-Funktion in SQL Server? .
Wenn Sie wissen möchten, ob die Instanz das Hinzufügen von benutzerdefiniertem .NET-Code zu Datenbanken zulässt, führen Sie Folgendes aus und aktivieren Sie das Feld "run_value":
EXEC sp_configure 'clr enabled';
Informationen zur Bedeutung des SQLCLR-Wartetyps im Ressourcenmonitor finden Sie im folgenden Blogbeitrag:
Funktionsweise: Was steckt hinter der Wartekategorie SQLCLR in SQL Server 2008 Activity Monitor?
und ich glaube, die relevante Zeile (da sie sich auf die SQLCLR-Kategorie bezieht, die Sie betrachten) aus diesem Beitrag lautet:
Was ich fand, war, dass einige der wait_types ignoriert werden sollten, da erwartet wird, dass sie warten.
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;