添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

适用于: SQL Server

不再需要使用 CREATE ASSEMBLY 语句在 SQL Server 中注册的程序集时,可以删除或删除这些程序集提供的功能。 删除程序集时,将从数据库中删除程序集和它的所有关联文件,如调试文件。 若要删除程序集,可按照如下语法使用 DROP ASSEMBLY 语句:

DROP ASSEMBLY MyDotNETAssembly  

DROP ASSEMBLY 不会干扰引用当前正在运行的程序集的任何代码,但是,执行 DROP ASSEMBLY 之后,任何调用程序集代码的尝试都将失败。

如果程序集被存在于该数据库中的另一个程序集引用,或者它被当前数据库中的公共语言运行时 (CLR) 函数、过程、触发器、用户定义类型 (UDT) 或用户定义聚合 (UDA) 使用,则 DROP ASSEMBLY 返回错误。 首先可使用 DROP AGGREGATE、DROP FUNCTION、DROP PROCEDURE、DROP TRIGGER 和 DROP TYPE 语句删除该程序集中所包含的所有托管数据库对象。

从数据库中删除 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)

  •