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 des 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 le SQL Server Management Studio à l’aide de l’éditeur assisté par assembly. En outre, le déploiement d’un SQL Server Project 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 des 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 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 dans un 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 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 ne sont pas exécutés. 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 Option de configuration de serveur activée pour clr.

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

Gestion des versions d'assemblys

Lorsqu’un assembly est chargé dans un instance SQL Server, l’assembly est stocké et géré dans les catalogues 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 demande à SQL Server d’actualiser même les assemblys dont dépendent les données persistantes dans 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 :

  • Colonnes calculées persistantes qui référencent des méthodes dans l’assembly, directement ou indirectement, via des fonctions ou 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, index, vues indexées ou expressions calculées seront cohérentes avec les routines et les types sous-jacents lors de la mise à jour de l’assembly CLR. 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 des applications Windows indiquant que l’assembly a été modifié avec des données non coché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 coché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 cochées et 0 pour les tables sans données non cochées.

Pour résoudre l’intégrité des données non cochées, exécutez DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS sur chaque table contenant des données non coché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 de l’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 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 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 le instance de SQL Server échouera.

Pour mettre à jour la version de l'assembly

Voir aussi

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