Ablegen einer Assembly
Gilt für:SQL Server
Assemblys, die in SQL Server mithilfe der CREATE ASSEMBLY
-Anweisung registriert sind, können gelöscht oder gelöscht werden, wenn die bereitgestellten Funktionen nicht mehr benötigt werden. Durch das Löschen einer Assembly werden die Assembly sowie alle zugehörigen Dateien, wie Debugdateien, aus der Datenbank entfernt. Verwenden Sie zum Ablegen einer Assembly die DROP ASSEMBLY
-Anweisung mit der folgenden Syntax:
DROP ASSEMBLY MyDotNETAssembly;
DROP ASSEMBLY
stört keinen Code, der auf die derzeit ausgeführte Assembly verweist, aber nachdem DROP ASSEMBLY
ausgeführt wird, schlagen alle Versuche zum Aufrufen des Assemblycodes fehl.
DROP ASSEMBLY
gibt einen Fehler zurück, wenn auf die Assembly von einer anderen Assembly verwiesen wird, die in der Datenbank vorhanden ist, oder wenn sie von Funktionen, Prozeduren, Triggern, benutzerdefinierten Typen (UDTs) oder benutzerdefinierten Aggregaten (USER-Defined Aggregate, UDAs) in der aktuellen Datenbank verwendet wird. Verwenden Sie zunächst die DROP AGGREGATE
, DROP FUNCTION
, DROP PROCEDURE
, DROP TRIGGER
und DROP TYPE
Anweisungen, um alle verwalteten Datenbankobjekte zu löschen, die in der Assembly enthalten sind.
Entfernen eines UDT aus der Datenbank
Die DROP TYPE
-Anweisung entfernt ein UDT aus der aktuellen Datenbank. Nachdem ein UDT abgelegt wurde, können Sie die DROP ASSEMBLY
-Anweisung verwenden, um die Assembly aus der Datenbank abzulegen.
Die DROP TYPE
-Anweisung schlägt fehl, wenn Objekte vom UDT abhängig sind, wie in den folgenden Situationen:
Tabellen in der Datenbank, die mit dem UDT definierte Spalten enthalten.
Funktionen, gespeicherte Prozeduren oder Trigger, die Variablen oder Parameter des UDT verwenden, die in der Datenbank mit der
WITH SCHEMABINDING
-Klausel erstellt wurden.
Suchen von UDT-Abhängigkeiten
Sie müssen zuerst alle abhängigen Objekte ablegen und dann die DROP TYPE
-Anweisung ausführen. Die folgende Transact-SQL Abfrage sucht alle Spalten und Parameter, die ein UDT in der AdventureWorks2022
-Datenbank verwenden.
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;