Partager via


Intégration du Common Language Runtime

S’applique à : SQL Server Azure 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 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 sql Server et les développeurs d’applications, l’intégration 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 évaluées) 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ée.

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 CLR dans Azure SQL Managed Instance :

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 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.

  • 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 tire parti de cela 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 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. Examine également les exigences relatives à la création d’objets de base de données à l’aide de l’intégration clR.

Nouveautés de 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