卸除元件
適用於: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)