Partage via


Intégration du Common Language Runtime (CLR)

S’applique à : SQL Server Azure SQL Managed Instance

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 côté serveur SQL Server (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 les utilisateurs et les développeurs d’applications SQL Server, l’intégration clR signifie que vous pouvez é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 évaluées) et des fonctions d’agrégation définies par l’utilisateur à l’aide de n’importe quel langage .NET Framework, y compris Visual Basic .NET et Visual C#. SQL Server inclut le .NET Framework version 4 préinstallée.

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

La sécurité d’accès au code n’est plus prise en charge

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 être en mesure d’accéder aux ressources système externes, d’appeler du code non managé et d’acquérir des privilèges sysadmin. Dans SQL Server 2017 (14.x) et versions ultérieures, l’option, clr sp_configure strict security, améliore 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 la compatibilité descendante, mais n’est pas recommandée.

Nous vous recommandons de signer tous les assemblys par un certificat ou une clé asymétrique, avec une connexion correspondante qui UNSAFE ASSEMBLY a reçu l’autorisation dans la master base de données. 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.

Quand utiliser des 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 aux ressources externes (serveurs, services web, bases de données), chiffrement personnalisé, etc. Voici quelques-uns des avantages de l’intégration 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 précédemment non disponibles pour les développeurs SQL Server. Les développeurs peuvent également utiliser la puissance de la bibliothèque .NET Framework, qui fournit un ensemble complet de classes qui peuvent être utilisées pour résoudre rapidement et efficacement les problèmes de programmation.

  • Amélioration de la sécurité et de la sécurité. Le code managé s'exécute dans un environnement CLR, hébergé par le moteur de base de données. SQL Server l’utilise pour offrir 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é par le biais d’un environnement standardisé. Le développement de base de données est intégré aux 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 d’amélioration des performances et de l’extensibilité. 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.

Les extensions de langage SQL Server 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 répertorie les articles de cette section.

Article Description
Vue d’ensemble de l’intégration clR Décrit les types d’objets qui peuvent être générés à l’aide de l’intégration CLR. Examine également les exigences relatives à la création d’objets de base de données à l’aide de l’intégration clR.
Intégration du CLR - Nouveautés Décrit les nouvelles fonctionnalités de cette version.
Architecture d’intégration CLR - Environnement hébergé 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.