Partager via


Suppression d’un assembly

Les assemblys qui ont été inscrits dans SQL Server à l’aide de l’instruction CREATE ASSEMBLY peuvent être supprimés ou supprimés lorsque la fonctionnalité qu’ils fournissent n’est plus nécessaire. La suppression d'un assembly supprime de la base de données l'assembly spécifié et tous les fichiers associés, tels que les fichiers de débogage. Pour supprimer un assembly, utilisez l’instruction DROP ASSEMBLY avec la syntaxe suivante :

DROP ASSEMBLY MyDotNETAssembly  

DROP ASSEMBLY n’interfère pas avec le code référençant l’assembly en cours d’exécution, mais après l’exécution de DROP ASSEMBLY, toutes les tentatives d’appel du code d’assembly échouent.

DROP ASSEMBLY retourne une erreur si l’assembly est référencé par un autre assembly qui existe dans la base de données, ou s’il est utilisé par les fonctions CLR (Common Language Runtime), les procédures, les déclencheurs, les types définis par l’utilisateur (UDT) ou les agrégats définis par l’utilisateur dans la base de données active. Tout d’abord, utilisez les instructions DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE, DROP TRIGGER et DROP TYPE pour supprimer tous les objets de base de données managés contenus dans l’assembly.

Suppression d’un UDT de la base de données

L’instruction DROP TYPE supprime un UDT de la base de données active. Une fois qu’un UDT est supprimé, vous pouvez utiliser l’instruction DROP ASSEMBLY pour supprimer l’assembly de la base de données.

L’instruction DROP TYPE échoue si les objets dépendent de l’UDT, comme dans les situations suivantes :

  • Des tables de la base de données contiennent des colonnes définies à l'aide de l'UDT.

  • Fonctions, procédures stockées ou déclencheurs qui utilisent des variables ou des paramètres de l’UDT, créés dans la base de données avec la clause WITH SCHEMABINDING.

Recherche de dépendances UDT

Vous devez d’abord supprimer tous les objets dépendants, puis exécuter l’instruction DROP TYPE. La requête Transact-SQL suivante recherche toutes les colonnes et paramètres qui utilisent un UDT dans la base de données AdventureWorks .

USE Adventureworks;  
SELECT o.name AS major_name, o.type_desc AS major_type_desc  
     , c.name AS minor_name, c.type_desc AS minor_type_desc  
     , at.assembly_class  
  FROM (  
        SELECT object_id, name, user_type_id, 'SQL_COLUMN' AS type_desc  
          FROM sys.columns  
     UNION ALL  
        SELECT object_id, name, user_type_id, 'SQL_PROCEDURE_PARAMETER'  
          FROM sys.parameters  
     ) AS c  
  JOIN sys.objects AS o  
    ON o.object_id = c.object_id  
  JOIN sys.assembly_types AS at  
    ON at.user_type_id = c.user_type_id;   

Voir aussi

Gestion des assemblys d’intégration CLR
Modification d’un assembly
Création d’un assembly
DROP AGGREGATE (Transact-SQL)
DROP FUNCTION (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
DROP TRIGGER (Transact-SQL)
DROP TYPE (Transact-SQL)