Freigeben über


Entfernen einer Assembly

Assemblys, die mit der CREATE ASSEMBLY-Anweisung in SQL Server registriert wurden, 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, den Assemblycode aufzurufen, 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 ClR-Funktionen (Common Language Runtime), 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 in der Assembly enthaltenen verwalteten Datenbankobjekte zu löschen.

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 von 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 AdventureWorks-Datenbank verwenden.

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;   

Siehe auch

Verwalten von CLR-Integrationsassemblys
Ändern einer Assembly
Erstellen einer Assembly
DROP AGGREGATE (Transact-SQL)
DROP-FUNKTION (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
DROP TRIGGER (Transact-SQL)
DROP TYPE (Transact-SQL)