卸除元件

在 SQL Server 中以該CREATE ASSEMBLY語句註冊的組合語言,當其功能不再需要時,可以被刪除或丟棄。 卸除元件會從資料庫移除元件及其所有相關聯的檔案,例如偵錯檔案。 若要卸除元件,請使用具有下列語法的 DROP ASSEMBLY 語句:

DROP ASSEMBLY MyDotNETAssembly  

DROP ASSEMBLY 不會干擾任何參考當前組合語言的程式碼,但執行後 DROP ASSEMBLY ,任何嘗試呼叫組合語言的嘗試都會失敗。

DROP ASSEMBLY 若該組合語言被資料庫中存在的另一個組合語言引用,或被當前資料庫中的通用語言執行時(CLR)函式、程序、觸發器、使用者定義型別(UDTs)或使用者定義聚合(UDA)使用,則會回傳錯誤。 首先,使用 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)