Entfernen einer Assembly

Assemblys, die in SQL Server mithilfe der CREATE ASSEMBLY Anweisung registriert wurden, können gelöscht oder gelöscht werden, wenn die bereitgestellte Funktionalität nicht mehr benötigt wird. 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 nach DROP ASSEMBLY ausführungsbereiten Versuchen, den Assemblycode aufzurufen, fehlschlagen.

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 TRIGGERund 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 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 FUNCTION (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
DROP TRIGGER (Transact-SQL)
DROP TYPE (Transact-SQL)