Partager via


Création de fonctions CLR

Vous pouvez créer un objet de base de données dans une instance de SQL Server programmée dans un assembly créé dans le CLR (Common Language Runtime) .NET Framework de Microsoft. 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 MicrosoftVisual 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 CRL