Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Sammansättningar som är registrerade i SQL Server med hjälp av CREATE ASSEMBLY-instruktionen kan tas bort eller tas bort när de funktioner som de tillhandahåller inte längre behövs. Om du tar bort en sammansättning tar du bort sammansättningen och alla dess associerade filer, till exempel felsökningsfiler, från databasen. Om du vill släppa en sammansättning använder du instruktionen DROP ASSEMBLY med följande syntax:
DROP ASSEMBLY MyDotNETAssembly;
DROP ASSEMBLY stör inte någon kod som refererar till sammansättningen som körs för närvarande, men när DROP ASSEMBLY körs misslyckas alla försök att anropa sammansättningskoden.
DROP ASSEMBLY returnerar ett fel om sammansättningen refereras av en annan sammansättning som finns i databasen, eller om den används av CLR-funktioner (Common Language Runtime), procedurer, utlösare, användardefinierade typer (UDT) eller användardefinierade aggregeringar (UDA) i den aktuella databasen. Använd först instruktionerna DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE, DROP TRIGGERoch DROP TYPE för att ta bort alla hanterade databasobjekt som ingår i sammansättningen.
Ta bort en UDT från databasen
Instruktionen DROP TYPE tar bort en UDT från den aktuella databasen. När en UDT har tagits bort kan du använda instruktionen DROP ASSEMBLY för att släppa sammansättningen från databasen.
Instruktionen DROP TYPE misslyckas om objekt är beroende av UDT, som i följande situationer:
Tabeller i databasen som innehåller kolumner som definierats med UDT.
Funktioner, lagrade procedurer eller utlösare som använder variabler eller parametrar i UDT, som skapats i databasen med
WITH SCHEMABINDING-satsen.
Hitta UDT-beroenden
Du måste först släppa alla beroende objekt och sedan köra instruktionen DROP TYPE. Följande Transact-SQL fråga letar upp alla kolumner och parametrar som använder en UDT i AdventureWorks2022-databasen.
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;