Partager via


Implémentation d’assemblys

S’applique à : SQL Server

Cet article fournit des informations sur les domaines suivants pour vous aider à implémenter et à utiliser des assemblys dans la base de données :

  • Création d'assemblys
  • Modification des assemblys
  • Suppression, désactivation et activation d’assemblys
  • Gestion des versions d’assembly

Créer des assemblys

Les assemblys sont créés dans SQL Server à l’aide de l’instruction Transact-SQL CREATE ASSEMBLY ou dans SQL Server Management Studio à l’aide de l’éditeur assisté à l’assembly. En outre, le déploiement d’un projet SQL Server dans Microsoft Visual Studio inscrit un assembly dans la base de données spécifiée pour le projet. Pour plus d’informations, consultez Déploiement d’objets de base de données CLR.

Modifier des assemblys

Les assemblys sont modifiés dans SQL Server à l’aide de l’instruction Transact-SQL ALTER ASSEMBLY ou de SQL Server Management Studio à l’aide de l’éditeur assisté par assembly.

Vous pouvez modifier un assembly lorsque vous souhaitez effectuer les actions suivantes :

  • Changer l'implémentation de l'assembly en chargeant une nouvelle version de ses binaires. Pour plus d’informations, consultez Gérer les versions d’assembly plus loin dans cet article.

  • Changer le jeu d'autorisations de l'assembly. Pour plus d’informations, consultez Conception d’assemblys.

  • Modifier la visibilité de l'assembly. Les assemblys visibles sont disponibles pour le référencement dans SQL Server. Les assemblys nonvisibles ne sont pas disponibles, même s’ils sont chargés dans la base de données. Par défaut, les assemblys chargés sur une instance de SQL Server sont visibles.

  • Ajouter ou supprimer un fichier de débogage ou source associé avec l'assembly.

Supprimer, désactiver et activer des assemblys

Les assemblys sont supprimés à l’aide de l’instruction Transact-SQL DROP ASSEMBLY ou de SQL Server Management Studio.

Par défaut, tous les assemblys créés dans SQL Server sont désactivés à partir de l’exécution. Vous pouvez utiliser l’option clr enabled de la sp_configure procédure stockée système, pour désactiver ou activer l’exécution de tous les assemblys chargés dans SQL Server. La désactivation de l’exécution de l’assembly empêche l’exécution de fonctions CLR (Common Language Runtime), les procédures stockées, les déclencheurs, les agrégats et les types définis par l’utilisateur de s’exécuter, et arrête les éléments en cours d’exécution. La désactivation de l’exécution de l’assembly ne désactive pas la possibilité de créer, de modifier ou de supprimer des assemblys. Pour plus d’informations, consultez Configuration du serveur : clr activé.

Pour plus d’informations, consultez sp_configure.

Gérer les versions d’assembly

Lorsqu’un assembly est chargé sur une instance SQL Server, l’assembly est stocké et géré dans les catalogues du système de base de données. Toutes les modifications apportées à la définition de l’assembly dans Microsoft .NET Framework doivent être propagées à l’assembly stocké dans le catalogue de bases de données.

Lorsque vous devez modifier un assembly, vous devez émettre une ALTER ASSEMBLY instruction pour mettre à jour l’assembly dans la base de données. Cette instruction met à jour l’assembly avec la dernière copie des modules .NET Framework contenant son implémentation.

La WITH UNCHECKED DATA clause de l’instruction ALTER ASSEMBLY indique à SQL Server d’actualiser même les assemblys sur lesquels les données persistantes dans la base de données dépendent. Plus précisément, vous devez spécifier WITH UNCHECKED DATA si l’un des éléments suivants existe :

  • Colonnes calculées persistantes qui référencent des méthodes dans l’assembly, directement ou indirectement, via des fonctions ou des méthodes Transact-SQL.

  • Colonnes d’un type CLR défini par l’utilisateur qui dépendent de l’assembly, et le type implémente un UserDefined format de sérialisation (non-Native) .

Attention

S’il WITH UNCHECKED DATA n’est pas spécifié, SQL Server tente d’empêcher ALTER ASSEMBLY l’exécution si la nouvelle version d’assembly affecte les données existantes dans les tables, les index ou d’autres sites persistants. Toutefois, SQL Server ne garantit pas que les colonnes calculées, les index, les vues indexées ou les expressions sont cohérents avec les routines et types sous-jacents lorsque l’assembly CLR est mis à jour. Soyez prudent lorsque vous exécutez ALTER ASSEMBLY pour vous assurer qu’il n’existe aucune incompatibilité entre le résultat d’une expression et une valeur basée sur cette expression stockée dans l’assembly.

Seuls les membres du rôle de base de données fixe db_owner et db_ddlowner peuvent s’exécuter ALTER ASSEMBLY à l’aide de la WITH UNCHECKED DATA clause.

SQL Server publie un message dans le journal des événements de l’application Windows que l’assembly a été modifié avec des données non vérifiées dans les tables. SQL Server marque ensuite toutes les tables qui contiennent des données dépendantes de l’assembly comme ayant des données non vérifiées. La has_unchecked_assembly_data colonne de l’affichage sys.tables catalogue contient la valeur 1 des tables qui contiennent des données non vérifiées et 0 pour les tables sans données non vérifiées.

Pour résoudre l’intégrité des données non vérifiées, exécutez-la DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS sur chaque table contenant des données non vérifiées. En DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS cas d’échec, vous devez supprimer les lignes de table qui ne sont pas valides ou modifier le code d’assembly pour résoudre les problèmes, puis émettre d’autres ALTER ASSEMBLY instructions.

ALTER ASSEMBLY modifie la version de l’assembly. La culture et le jeton de clé publique de l'assembly restent inchangés. SQL Server n’autorise pas l’inscription de différentes versions d’un assembly portant le même nom, la même culture et la clé publique.

Interactions avec une stratégie à l’échelle de l’ordinateur pour la liaison de version

Si des références aux assemblys stockés dans SQL Server sont redirigées vers des versions spécifiques à l’aide d’une stratégie d’éditeur ou d’une stratégie d’administrateur à l’échelle de l’ordinateur, vous devez effectuer l’une des actions suivantes :

  • Assurez-vous que la nouvelle version vers laquelle s'effectue cette redirection se trouve dans la base de données.

  • Modifiez les instructions pointant vers les fichiers de stratégie externes de l'ordinateur ou la stratégie du serveur de publication pour vous assurer qu'elles référencent la version spécifique figurant dans la base de données.

Sinon, une tentative de chargement d’une nouvelle version d’assembly sur l’instance de SQL Server échoue.

Pour plus d’informations, consultez ALTER ASSEMBLY.