在 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)