Partager via


Gérer les assemblys d’intégration CLR

Applies to:SQL Server

Le code managé est compilé, puis déployé dans des unités appelées assembly CLR (Common Language Runtime). Un assembly est empaqueté en tant que fichier DLL ou exécutable (.exe). Alors qu'un fichier exécutable peut s'exécuter seul, une DLL doit être hébergée dans une application existante. Les assemblys DLL managés peuvent être chargés et hébergés par SQL Server. SQL Server vous oblige à inscrire l’assembly dans une base de données à l’aide de l’instruction CREATE ASSEMBLY, avant de pouvoir être chargé dans le processus et utilisé. Les assemblys peuvent également être mis à jour à partir d’une version plus récente à l’aide de l’instruction ALTER ASSEMBLY, ou supprimées de SQL Server à l’aide de l’instruction DROP ASSEMBLY.

Les informations d’assembly sont stockées dans la table sys.assembly_files dans la base de données où l’assembly est installé. Le tableau sys.assembly_files contient les colonnes suivantes.

Column Description
assembly_id Identificateur défini pour l'assembly. Ce numéro est affecté à tous les objets se rapportant au même assembly.
name Nom de l'objet.
file_id Nombre identifiant chaque objet, avec le premier objet associé à un assembly_id donné étant donné la valeur 1. Si plusieurs objets sont associés à la même assembly_id, chaque valeur de file_id suivante est incrémentée de 1.
content Représentation hexadécimale de l'assembly ou du fichier.

Dans cette section

Article Description
Créer un d’assembly Décrit la création de SAFE, de EXTERNAL_ACCESSet d’assemblys CLR UNSAFE dans SQL Server
Modifier un d’assembly Décrit la mise à jour des assemblys CLR dans SQL Server
Supprimer un d’assembly Décrit la suppression d’assemblys CLR à partir de SQL Server

La sécurité d’accès du 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 pourrait ê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. Dans SQL Server 2017 (14.x) et versions ultérieures, l’option sp_configure, clr 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 assurer une compatibilité descendante, mais cela n’est pas recommandé.

Nous vous recommandons de signer tous les assemblys 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. Les administrateurs SQL Server peuvent également ajouter des assemblys à une liste d’assemblys, que le moteur de base de données doit approuver. For more information, see sys.sp_add_trusted_assembly.