【发布时间】:2016-06-12 02:58:45
【问题描述】:
我收到“删除程序集失败,因为它被对象引用”错误。 据我了解,我需要在删除之前删除所有引用此程序集的函数。 有没有通用的方法可以做到这一点?
【问题讨论】:
标签: sql-server-2008 .net-assembly universal
我收到“删除程序集失败,因为它被对象引用”错误。 据我了解,我需要在删除之前删除所有引用此程序集的函数。 有没有通用的方法可以做到这一点?
【问题讨论】:
标签: sql-server-2008 .net-assembly universal
你需要一个这样的小脚本:
DECLARE @sql NVARCHAR(MAX) = N'';
DECLARE @assembly_name NVARCHAR(MAX)='assembly'
SELECT @sql += '
DROP ' +
CASE
WHEN o.type='PC' THEN 'PROCEDURE '
ELSE 'FUNCTION '
END
+ QUOTENAME(o.Name)
+ ';'
FROM Sys.Assemblies asm
INNER JOIN SYS.ASSEMBLY_MODULES m ON asm.assembly_id=m.assembly_id
INNER JOIN SYS.OBJECTS o ON m.object_id = o.object_id
WHERE asm.name=@assembly_name
SET @sql=@sql+'
DROP ASSEMBLY '+QUOTENAME(@assembly_name)
PRINT @sql;
EXEC sp_executesql @sql;
但是,删除所有程序集的依赖对象是不安全的,所以要小心将被删除的对象。
【讨论】: