Een assembly verwijderen
van toepassing op:SQL Server-
Assembly's die zijn geregistreerd in SQL Server met behulp van de CREATE ASSEMBLY
-instructie kunnen worden verwijderd of verwijderd wanneer de functionaliteit die ze bieden niet meer nodig is. Als u een assembly verwijdert, worden de assembly en alle bijbehorende bestanden, zoals foutopsporingsbestanden, uit de database verwijderd. Als u een assembly wilt verwijderen, gebruikt u de instructie DROP ASSEMBLY
met de volgende syntaxis:
DROP ASSEMBLY MyDotNETAssembly;
DROP ASSEMBLY
heeft geen invloed op code die verwijst naar de assembly die momenteel wordt uitgevoerd, maar nadat DROP ASSEMBLY
uitgevoerd, mislukken pogingen om de assemblycode aan te roepen.
DROP ASSEMBLY
retourneert een fout als naar de assembly wordt verwezen door een andere assembly die aanwezig is in de database, of als deze wordt gebruikt door CLR-functies (Common Language Runtime), procedures, triggers, door de gebruiker gedefinieerde typen (UDT's) of door de gebruiker gedefinieerde aggregaties (UDF's) in de huidige database. Gebruik eerst de instructies DROP AGGREGATE
, DROP FUNCTION
, DROP PROCEDURE
, DROP TRIGGER
en DROP TYPE
om beheerde databaseobjecten in de assembly te verwijderen.
Een UDT uit de database verwijderen
Met de DROP TYPE
-instructie wordt een UDT uit de huidige database verwijderd. Zodra een UDT is verwijderd, kunt u de DROP ASSEMBLY
instructie gebruiken om de assembly uit de database te verwijderen.
De DROP TYPE
-instructie mislukt als objecten afhankelijk zijn van de UDT, zoals in de volgende situaties:
Tabellen in de database die kolommen bevatten die zijn gedefinieerd met behulp van de UDT.
Functies, opgeslagen procedures of triggers die gebruikmaken van variabelen of parameters van de UDT, gemaakt in de database met de
WITH SCHEMABINDING
component.
UDT-afhankelijkheden zoeken
U moet eerst alle afhankelijke objecten verwijderen en vervolgens de instructie DROP TYPE
uitvoeren. Met de volgende Transact-SQL query worden alle kolommen en parameters gevonden die gebruikmaken van een UDT in de AdventureWorks2022
-database.
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;