Intégration du Common Language Runtime

S’applique à :SQL ServerAzure SQL Managed Instance

Microsoft SQL Server et Azure SQL Managed Instance vous permettent d’implémenter certaines des fonctionnalités avec les langages .NET à l’aide de l’intégration clr (Common Language Runtime) native en tant que modules SQL Server côté serveur (procédures, fonctions et déclencheurs). Le CLR fournit le code managé avec des services tels que l'intégration interlangage, la sécurité d'accès du code, la gestion de la durée de vie des objets et la prise en charge du débogage et des profils. Pour SQL Server utilisateurs et les développeurs d’applications, l’intégration du CLR signifie que vous pouvez désormais écrire des procédures stockées, des déclencheurs, des types définis par l’utilisateur, des fonctions définies par l’utilisateur (scalaires et table) et des fonctions d’agrégation définies par l’utilisateur à l’aide de n’importe quel langage .NET Framework, y compris Microsoft Visual Basic .NET et Microsoft Visual C#. SQL Server inclut le .NET Framework version 4 préinstallé.

Avertissement

CLR utilise la sécurité d’accès du code (CAS) dans le .NET Framework, qui n’est plus pris en charge comme limite de sécurité. Un assembly CLR créé avec PERMISSION_SET = SAFE peut être en mesure d’accéder à des ressources système externes, d’appeler du code non managé et d’acquérir des privilèges sysadmin. À compter de SQL Server 2017 (14.x), une option de sp_configure appelée clr strict security est introduite pour renforcer la sécurité des assemblys CLR. clr strict security est activée par défaut et traite les assemblys SAFE et EXTERNAL_ACCESS comme s’ils étaient marqués UNSAFE. L’option clr strict security peut être désactivée pour assurer une compatibilité descendante, mais ceci n’est pas recommandé. Microsoft recommande que tous les assemblys soient signés par un certificat ou une clé asymétrique avec une connexion correspondante à laquelle a été accordée l’autorisation UNSAFE ASSEMBLY dans la base de données master. Pour plus d’informations, consultez CLR strict security. Les administrateurs SQL Server peuvent également ajouter des assemblys à une liste d’assemblys, que le moteur de base de données doit approuver. Pour plus d’informations, consultez sys.sp_add_trusted_assembly.

Cette vidéo de 6 minutes vous montre comment utiliser le CLR dans Azure SQL Managed Instance :

Quand utiliser les modules CLR

L’intégration CLR vous permet d’implémenter des fonctionnalités complexes disponibles dans .NET Framework, telles que des expressions régulières, du code pour accéder à des ressources externes (serveurs, services web, bases de données), un chiffrement personnalisé, etc. Voici quelques-uns des avantages de l’intégration du CLR côté serveur :

  • Un meilleur modèle de programmation. Les langages .NET Framework sont à bien des égards plus riches que Transact-SQL, offrant des constructions et des fonctionnalités auparavant non disponibles pour les développeurs SQL Server. Les développeurs peuvent aussi tirer parti de la puissance de la bibliothèque du .NET Framework, qui propose un ensemble complet de classes pour résoudre rapidement et efficacement les problèmes de programmation.

  • Sécurité améliorée. Le code managé s'exécute dans un environnement CLR, hébergé par le moteur de base de données. SQL Server en tire parti pour fournir une alternative plus sûre et plus sécurisée aux procédures stockées étendues disponibles dans les versions antérieures de SQL Server.

  • Possibilité de définir des types de données et des fonctions d'agrégation. Les types définis par l’utilisateur et les agrégats définis par l’utilisateur sont deux nouveaux objets de base de données managés qui étendent les fonctionnalités de stockage et d’interrogation de SQL Server.

  • Développement simplifié via un environnement standardisé. Le développement de base de données est intégré dans les futures versions de l’environnement de développement Microsoft Visual Studio .NET. Les développeurs se servent des mêmes outils pour développer et déboguer les objets de base de données et les scripts que ceux qu'ils utilisent pour écrire des composants et services .NET Framework de couche intermédiaire ou client.

  • Potentiel pour des performances et une extensibilité améliorées. Dans de nombreux cas, la compilation du langage .NET Framework et les modèles d'exécution offrent des performances améliorées par rapport à Transact-SQL.

SQL Server extensions de langage fournissent un autre environnement d’exécution pour les runtimes proches du moteur de base de données. Pour une explication des différences entre SQL CLR et les extensions de langage SQL, consultez Comparer les extensions de langage SQL Server et SQL CLR.

Le tableau suivant décrit les rubriques de cette section.

Vue d'ensemble de l'intégration du CLR
Décrit les types d’objets qui peuvent être générés à l’aide de l’intégration CLR. Passe également en revue la configuration requise pour la création d’objets de base de données à l’aide de l’intégration CLR.

Nouveautés dans l'intégration du CLR
Décrit les nouvelles fonctionnalités de cette version.

Architecture d'intégration du CLR
Décrit les objectifs de conception de l'intégration du CLR.

Activation de l’intégration du CLR
Décrit comment activer l'intégration du CLR.

Voir aussi

Installation du .NET Framework (SQL Server uniquement)
Performances de l'intégration du CLR