卸除組件

適用於:SQL Server

當不再需要它們所提供的功能時,可以使用 CREATE ASSEMBLY 語句在 SQL Server 中註冊的元件可以刪除或卸載。 卸除組件會從資料庫中移除組件及其所有相關聯的檔案 (例如偵錯檔案)。 若要卸除組件,請使用 DROP ASSEMBLY 陳述式搭配下列語法:

DROP ASSEMBLY MyDotNETAssembly  

雖然 DROP ASSEMBLY 不會干擾參考目前執行中組件的任何程式碼,但是在 DROP ASSEMBLY 執行之後,任何嘗試叫用此組件的行為都會失敗。

如果組件是由資料庫中的另一個組件所參考,或者如果它是由目前資料庫中的 Common Language Runtime (CLR) 函數、程序、觸發程序、使用者定義型別 (UDT) 或使用者定義彙總 (UDA) 所使用,DROP ASSEMBLY 就會傳回錯誤。 請先使用 DROP AGGREGATE、DROP FUNCTION、DROP PROCEDURE、DROP TRIGGER 和 DROP TYPE 陳述式來刪除此組件所包含的任何 Managed 資料庫物件。

從資料庫移除 UDT

DROP TYPE 陳述式會從目前資料庫移除 UDT。 一旦卸除 UDT 之後,您就可以使用 DROP ASSEMBLY 陳述式,從資料庫中卸除組件。

如果物件相依於 UDT,DROP TYPE 陳述式就會失敗,如下列情況所示:

  • 資料庫中包含使用 UDT 定義之資料行的資料表。

  • 使用 WITH SCHEMABINDING 子句在資料庫中建立的函數、預存程序或觸發程序 (這些項目會使用 UDT 變數或參數)。

尋找 UDT 相依性

您必須先卸除所有相依物件,然後再執行 DROP TYPE 陳述式。 下列 Transact-SQL 查詢會找出 AdventureWorks 資料庫中使用 UDT 的所有資料行和參數。

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;   

另請參閱

管理 CLR 整合組件
變更組件
建立組件
DROP AGGREGATE (Transact-SQL)
DROP FUNCTION (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
DROP TRIGGER (Transact-SQL)
DROP TYPE (Transact-SQL)