Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez créer un objet de base de données à l’intérieur d’une instance de SQL Server qui est programmée dans un assembly créé dans le Common Language Runtime (CLR) de Microsoft .NET Framework. Les objets de base de données qui peuvent tirer parti du modèle de programmation enrichi fourni par le Common Language Runtime incluent les fonctions d’agrégation, les fonctions, les procédures stockées, les déclencheurs et les types.
La création d’une fonction CLR dans SQL Server implique les étapes suivantes :
Définissez la fonction en tant que méthode statique d’une classe dans un langage pris en charge par le .NET Framework. Pour plus d’informations sur la façon de programmer des fonctions dans le Common Language Runtime, consultez CLR User-Defined Functions. Ensuite, compilez la classe pour générer un assembly dans .NET Framework à l’aide du compilateur de langage approprié.
Inscrivez l’assembly dans SQL Server à l’aide de l’instruction CREATE ASSEMBLY. Pour plus d’informations sur les assemblys dans SQL Server, consultez Assemblys (moteur de base de données).
Créez la fonction référencée par l’assembly enregistré à l’aide de l’instruction CREATE FUNCTION.
Remarque
Le déploiement d’un projet SQL Server dans MicrosoftVisual Studio inscrit un assembly dans la base de données spécifiée pour le projet. Le déploiement du projet crée également des fonctions CLR dans la base de données pour toutes les méthodes annotées avec l’attribut SqlFunction . Pour plus d’informations, consultez Déploiement d’objets de base de données CLR.
Remarque
La capacité de SQL Server à exécuter le code CLR est désactivée par défaut. Vous pouvez créer, modifier et supprimer des objets de base de données qui référencent des modules de code managé, mais ces références ne s’exécutent pas dans SQL Server, sauf si l’option clr activée est activée à l’aide de sp_configure (Transact-SQL).
Accès aux ressources externes
Les fonctions CLR peuvent être utilisées pour accéder à des ressources externes telles que des fichiers, des ressources réseau, des services Web, d’autres bases de données (notamment des instances distantes de SQL Server). Cela peut être obtenu à l’aide de différentes classes dans le .NET Framework, telles que System.IO, , System.WebServicesSystem.Sql, etc. L’assembly qui contient de telles fonctions doit au moins être configuré avec le jeu d’autorisations EXTERNAL_ACCESS à cet effet. Pour plus d’informations, consultez CREATE ASSEMBLY (Transact-SQL). Le fournisseur managé SQL Client peut être utilisé pour accéder aux instances distantes de SQL Server. Toutefois, les connexions en boucle locale au serveur d’origine ne sont pas prises en charge dans les méthodes CLR.
Pour créer, modifier ou supprimer des assemblys dans SQL Server
Pour créer une fonction CLR
Accès au code natif
Les fonctions CLR peuvent être utilisées pour accéder au code natif (non managé), tel que le code écrit en C ou C++, via l’utilisation de PInvoke à partir du code managé (voir Appel de fonctions natives à partir du code managé pour plus d’informations). Cela peut vous permettre de réutiliser le code hérité en tant qu'UDF CLR, ou d'écrire des UDF critiques pour les performances en code natif. Cela nécessite l'utilisation d'un assembly non sécurisé. Pour des mises en garde concernant l’utilisation d’assemblies UNSAFE, consultez CLR Integration Code Access Security.
Voir aussi
Créer des fonctions définies par l’utilisateur (moteur de base de données)
Créer des agrégats définis par l’utilisateur
Exécuter des fonctions définies par l’utilisateur
Afficher les fonctions définies par l’utilisateur
Concepts de programmation d’intégration du Common Language Runtime (CLR)