Compartir a través de


Quitar un ensamblado

Los ensamblados que se han registrado en SQL Server mediante la instrucción CREATE ASSEMBLY se pueden eliminar o quitar cuando la funcionalidad que proporcionan ya no es necesaria. Cuando se quita un ensamblado se quita el propio ensamblado y todos sus archivos asociados, como los archivos de depuración, de la base de datos. Para quitar un ensamblado, use la instrucción DROP ASSEMBLY con la sintaxis siguiente:

DROP ASSEMBLY MyDotNETAssembly  

DROP ASSEMBLY no interfiere con ningún código que haga referencia al ensamblado que se está ejecutando actualmente, pero después de que se ejecute DROP ASSEMBLY, se producirá un error en los intentos de invocar el código de ensamblado.

DROP ASSEMBLY devuelve un error si el ensamblado es al que hace referencia otro ensamblado que existe en la base de datos, o si lo usan las funciones, procedimientos, desencadenadores, tipos definidos por el usuario (UDT) o agregados definidos por el usuario (UDF) en la base de datos actual. En primer lugar, use las instrucciones DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE, DROP TRIGGER y DROP TYPE para eliminar los objetos de base de datos administrados incluidos en el ensamblado.

Quitar un UDT de la base de datos

La instrucción DROP TYPE quita un UDT de la base de datos actual. Una vez que se quita un UDT, puede usar la instrucción DROP ASSEMBLY para quitar el ensamblado de la base de datos.

Se produce un error en la instrucción DROP TYPE si los objetos dependen del UDT, como en las situaciones siguientes:

  • Tablas de la base de datos que contienen columnas definidas mediante el UDT.

  • Funciones, procedimientos almacenados o desencadenadores que usan variables o parámetros del UDT, creados en la base de datos con la cláusula WITH SCHEMABINDING.

Búsqueda de dependencias UDT

Primero debe quitar todos los objetos dependientes y, a continuación, ejecutar la instrucción DROP TYPE. La siguiente consulta Transact-SQL busca todas las columnas y parámetros que usan un UDT en la base de datos AdventureWorks .

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;   

Véase también

Administración de ensamblados de integración clR
Modificar un ensamblado
Creación de un ensamblado
DROP AGGREGATE (Transact-SQL)
DROP FUNCTION (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
Desactivar el disparador (Transact-SQL)
DROP TYPE (Transact-SQL)