共用方式為


卸除組件

如果您不再需要已經使用 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;