Créer des fonctions CLR
Vous pouvez créer un objet de base de données dans une instance SQL Server programmée dans un assembly créé dans le CLR (Common Language Runtime) Microsoft .NET Framework. Les objets de base de données peuvent exploiter le modèle de programmation élaboré fourni par les fonctions agrégées, les fonctions, les procédures stockées, les déclencheurs et les types du CLR.
La création d'une fonction CLR dans SQL Server comprend les étapes suivantes :
Définissez la fonction en tant que méthode statique d'une classe dans un langage reconnu par le .NET Framework. Pour plus d'informations sur la programmation des fonctions dans le CLR, consultez Fonctions CLR définies par l'utilisateur. Ensuite, compilez la classe pour créer un assembly dans le .NET Framework à l'aide du compilateur du langage approprié.
Enregistrez 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 qui référence l'assembly enregistré à l'aide de l'instruction CREATE FUNCTION.
[!REMARQUE]
Le déploiement d'un projet SQL Server dans Microsoft Visual Studio enregistre un assembly dans la base de données spécifiée pour le projet. Le déploiement du projet crée aussi les fonctions CLR dans la base de données pour toutes les méthodes annotées par l'attribut SqlFunction. Pour plus d'informations, consultez Déploiement d'objets de base de données CLR.
[!REMARQUE]
Par défaut, SQL Server ne peut pas exécuter du code CLR. 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 pourront pas s'exécuter dans SQL Server, sauf si l'option clr enabled est activée via 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 et d'autres bases de données (notamment des instances distantes de SQL Server). Pour cela, vous devez utiliser différentes classes dans le .NET Framework, telles que System.IO, System.WebServices, System.Sql, etc. L'assembly qui contient ces fonctions doit être configuré au minimum avec l'autorisation EXTERNAL_ACCESS définie dans ce but. Pour plus d'informations, consultez CREATE ASSEMBLY (Transact-SQL). Vous pouvez recourir au fournisseur managé Client SQL pour accéder à des instances distantes de SQL Server. Cependant, les connexions de bouclage au serveur d'origine ne sont pas gérées dans les fonctions 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 permettent d'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é (pour plus d'informations, consultez Appel à des fonctions natives à partir de code managé). Vous pouvez ainsi réutiliser du code hérité en tant que fonctions CLR définies par l'utilisateur ou écrire des fonctions définies par l'utilisateur ayant un impact sur les performances en code natif. L'utilisation d'un assembly UNSAFE est obligatoire. Pour connaître les précautions à prendre lors de l'utilisation des assemblys UNSAFE, consultez Sécurité d'accès du code de l'intégration du CLR.
Voir aussi
Concepts
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 les fonctions définies par l'utilisateur
Afficher les fonctions définies par l'utilisateur