4
我得到'拖放程序集失敗,因爲它被對象引用'錯誤。 據我所知,我需要放棄所有引用該組件的函數。 有沒有什麼普遍的方法如何做到這一點?如何在CLR程序集放入SQL Server之前將所有函數從CLR程序集中刪除?
我得到'拖放程序集失敗,因爲它被對象引用'錯誤。 據我所知,我需要放棄所有引用該組件的函數。 有沒有什麼普遍的方法如何做到這一點?如何在CLR程序集放入SQL Server之前將所有函數從CLR程序集中刪除?
你需要一個這樣的小腳本:
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 [email protected]_name
SET @[email protected]+'
DROP ASSEMBLY '+QUOTENAME(@assembly_name)
PRINT @sql;
EXEC sp_executesql @sql;
但是,刪除所有組件的依賴對象並不安全,所以要小心哪些將被刪除。
它爲我工作得很好!我沒有考慮存儲過程,但你做到了。非常感謝! – dogrishin
謝謝,你可能想補充一點。 WHEN o.type ='AF'THEN'AGGREGATE' – Rm558