SQLCLR est la possibilité d'exécuter du code .NET dans SQL Server.
Lorsque les gens parlent de SQLCLR, ils font généralement référence à la possibilité d'écrire du code .NET personnalisé (procédures stockées, fonctions, déclencheurs, types définis par l'utilisateur et agrégats définis par l'utilisateur). Dans ce cas, cette capacité peut être activée et désactivée via l'option serveur de "clr enabled" dans sp_configure
, et je crois que cela s'appelle "Intégration CLR" dans l'interface graphique de configuration de la surface d'exposition. L'ajout de fonctionnalités .NET nécessite l'utilisation de CREATE ASSEMBLY pour charger le code .NET compilé dans SQL Server.
Cependant, même avec l'option "clr enabled" réglée sur 0
/ "off" / "disabled", la fonctionnalité CLR est toujours utilisée pour la fonctionnalité interne et certaines fonctions intégrées et sera toujours là, sauf si "utiliser les fibres Windows" / " l'option de regroupement léger "est activée.
Pour une description très détaillée de ce que SQLCLR est, n'est pas et de ce qu'il peut faire, consultez l'article que j'ai écrit sur ce sujet sur SQL Server Central: Escalier vers SQLCLR Niveau 1: Qu'est-ce que SQLCLR? (une inscription gratuite est requise pour visualiser le contenu de ce site). Une version allégée de cet article est disponible dans la réponse StackOverflow suivante: Quand avons-nous besoin d'une fonction CLR dans SQL Server? .
Si vous souhaitez savoir si l'instance autorise ou non l' ajout de code .NET personnalisé aux bases de données, exécutez ce qui suit et cochez le champ "run_value":
EXEC sp_configure 'clr enabled';
En ce qui concerne la signification du type d'attente SQLCLR dans le moniteur de ressources, veuillez consulter le billet de blog suivant:
Fonctionnement: ce qui se cache derrière la catégorie d'attente SQLCLR dans le moniteur d'activité SQL Server 2008
et je pense que la ligne pertinente (en ce qui concerne la catégorie SQLCLR que vous regardez) de ce poste est:
Ce que j'ai trouvé, c'est que plusieurs des wait_types doivent être ignorés car ils sont des attentes.
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;