Partager via


Assemblys - Implémentation

S’applique à : SQL Server

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 d’assemblys

  • Gestion des versions d’assembly

Création d’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.

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

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

Modification d’assemblys

Les assemblys sont modifiés dans SQL Server à l’aide de l’instruction Transact-SQL ALTER ASSEMBLY ou dans SQL Server Management Studio à l’aide de l’éditeur assisté par assembly. 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 La gestion des versions d’assembly 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 le 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 sur 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

Les assemblys sont supprimés à l’aide de l’instruction Transact-SQL DROP ASSEMBLY ou de 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, tous les assemblys créés dans SQL Server sont désactivés à partir de l’exécution. Vous pouvez utiliser l’option clr activée de la procédure stockée système sp_configure pour désactiver ou activer 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 l’option de configuration de serveur activée clr.

Pour désactiver et activer l’exécution de l’assembly

Gestion des 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.

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

La clause WITH UNCHECKED DATA 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. En particulier, vous devez spécifier WITH UNCHECKED DATA en présence d'au moins un des éléments suivants :

  • 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.

  • 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).

Attention

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. 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'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 du rôle de base de données fixe db_owner et db_ddlowner peuvent exécuter ALTER ASSEMBLY à l’aide de la clause WITH UNCHECKED DATA.

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 colonne has_unchecked_assembly_data de la vue catalogue sys.tables contient la valeur 1 pour les 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 DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS sur chaque table qui a des données non vérifiées. Si DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS échoue, 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 des instructions ALTER ASSEMBLY supplémentaires.

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

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

Si les 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 opérations 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 mettre à jour la version d’un assembly

Voir aussi

Assemblys (moteur de base de données)
Obtention d'informations sur les assemblys