Supprimer un assembly
S'applique à :SQL Server
Les assemblys 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 DROP ASSEMBLY
s’exécute, toute tentative d’appel du code d’assembly échoue.
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 des fonctions, procédures, déclencheurs, types définis par l’utilisateur (UUDT) ou agrégats définis par l’utilisateur dans la base de données active. Utilisez d’abord 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.
Supprimer 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
.
Rechercher des 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 AdventureWorks2022
.
USE Adventureworks2022;
GO
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
INNER JOIN sys.objects AS o
ON o.object_id = c.object_id
INNER JOIN sys.assembly_types AS at
ON at.user_type_id = c.user_type_id;