Partager via


Implémentation d'assemblys

Cette rubrique fournit des informations sur les concepts suivants, afin de vous aider à implémenter et à utiliser les assemblys dans vos bases de données :

  • Création d'assemblys

  • Modification des assemblys

  • Suppression, désactivation et activation des assemblys

  • Gestion des versions d'assemblys

Création d'assemblys

Dans SQL Server, les assemblys sont créés à l'aide de l'instruction Transact-SQL CREATE ASSEMBLY, et dans SQL Server Management Studio, au moyen de l'éditeur assisté d'assemblys. De plus, 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. Pour plus d'informations, consultez Déploiement d'objets de base de données CLR.

Pour créer un assembly à l'aide de Transact-SQL

Pour créer un assembly à l'aide de SQL Server Management Studio

Modification des assemblys

Dans SQL Server, vous modifiez les assemblys au moyen de l'instruction Transact-SQL ALTER ASSEMBLY. Dans SQL Server Management Studio, vous utilisez pour cela l'éditeur assisté d'assemblys. Vous pouvez modifier un assembly pour effectuer les tâches suivantes :

  • Changer l'implémentation de l'assembly en chargeant une nouvelle version de ses binaires. Pour plus d'informations, consultez Gestion des versions d'assemblys plus loin dans cette rubrique.

  • 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 référencement dans SQL Server. Les assemblys non visibles ne sont pas disponibles, même s'ils ont été chargés dans la base de données. Par défaut, les assemblys chargés dans une instance de SQL Server sont visibles.

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

Pour modifier un assembly à l'aide de Transact-SQL

Pour modifier un assembly à l'aide de SQL Server Management Studio

Suppression, désactivation et activation des assemblys

Vous supprimez les assemblys à l'aide de l'instruction Transact-SQL DROP ASSEMBLY ou dans SQL Server Management Studio.

Pour supprimer un assembly à l'aide de Transact-SQL

Pour supprimer un assembly à l'aide de SQL Server Management Studio

Par défaut, l'exécution de tous les assemblys créés dans SQL Server est désactivée. Vous pouvez avoir recours à l'option clr enabled de la procédure stockée système sp_configure pour activer ou désactiver l'exécution de tous les assemblys chargés dans SQL Server. La désactivation de l'exécution d'un assembly empêche l'exécution des fonctions CLR (Common Language Runtime), des procédures stockées, des déclencheurs, des agrégats et des types définis par l'utilisateur, de même qu'elle arrête leur exécution si celle-ci est en cours. Elle n'entrave cependant pas la possibilité de créer, de modifier ou de supprimer des assemblys. Pour plus d'informations, consultez Option clr enabled.

Pour désactiver et activer la création d'assemblys

Gestion des versions d'assemblys

Quand un assembly est chargé dans une instance de SQL Server, il est stocké et géré dans les catalogues système de la base de données. Toute modification apportée à la définition de l'assembly dans Microsoft.NET Framework doit être propagée vers l'assembly stocké dans le catalogue de la base de données.

Quand vous modifiez un assembly, vous devez émettre une instruction ALTER ASSEMBLY pour le mettre à jour dans la base de données, de façon à le remplacer par la dernière copie des modèles .NET Framework contenant son implémentation.

La clause WITH UNCHECKED DATA de l'instruction ALTER ASSEMBLY prescrit à SQL Server d'actualiser jusqu'aux assemblys dont dépendent des données persistantes de la base de données. En particulier, vous devez spécifier WITH UNCHECKED DATA en présence d'au moins un des éléments suivants :

  • des colonnes calculées persistantes référençant des méthodes de l'assembly, soit directement, soit indirectement via des méthodes ou des fonctions Transact-SQL ;

  • des colonnes d'un type CLR défini par l'utilisateur dépendant de l'assembly, ce type implémentant un format de sérialisation UserDefined (non-Native).

AttentionAttention

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

Seuls les membres des rôles de base de données fixes db_owner et db_ddlowner peuvent exécuter ALTER ASSEMBLY avec la clause WITH UNCHECKED DATA.

SQL Server publie un message dans le journal d'applications Windows indiquant que l'assembly a été modifié avec les données non vérifiées des tables. SQL Server marque ensuite les tables contenant les données dépendant de l'assembly comme comportant des données non vérifiées. La colonne has_unchecked_assembly_data de l'affichage catalogue sys.tables comprend la valeur 1 pour les tables comportant des valeurs non vérifiées, et 0 pour celles dépourvues de valeurs non vérifiées.

Pour contrôler l'intégrité des valeurs non vérifiées, exécutez DBCC CHECKTABLE sur chaque table comportant des données non vérifiées. Si DBCC CHECKTABLE échoue, vous devez soit supprimer les lignes de la table non valides, soit modifier le code de l'assembly de façon à résoudre les problèmes, puis émettre de nouvelles instructions ALTER ASSEMBLY.

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 avec le même nom, la même culture et la même clé publique.

Interactions avec la stratégie de l'ordinateur en matière de liaison des versions

Si des références à des assemblys stockés dans SQL Server sont redirigées vers des versions spécifiques à l'aide de la stratégie du serveur de publication ou de la stratégie de l'administrateur de l'ordinateur, vous devez procéder de l'une des façons 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.

Sans cela, la tentative de chargement d'une nouvelle version d'assembly dans l'instance de SQL Server échouera.

Pour mettre à jour la version de l'assembly