Как я могу обновить сборку DLL функции (или процедуры) CLR без необходимости отбрасывать и заново создавать сборку в SQL Server (2008 R2)?
В настоящее время, если я обновляю сборку (например, чтобы добавить новую функцию), SQL Server не будет соблюдать обновленную DLL, пока я не урону сборку:
DROP ASSEMBLY CLRFunctions
Msg 6590, Level 16, State 1, Line 1
DROP ASSEMBLY failed because 'CLRFunctions' is referenced by object 'NormalizeString'.
Но прежде чем я могу удалить сборку, я должен сначала удалить все функции, которые на нее ссылаются:
DROP FUNCTION NormalizeString
DROP FUNCTION RemoveDiacritics
DROP FUNCTION RemoveCombiningDiacritics
DROP FUNCTION CombineLigatures
....
DROP FUNCTION PseudolocalizeArabic
И тогда я могу бросить сборку:
DROP ASSEMBLY CLRFunctions
Теперь мне нужно « создать » сборку:
CREATE ASSEMBLY CLRFunctions FROM 'c:\foos\CLRFunctions.dll';
И теперь я должен охотиться за декларацией всех UDF, которые были зарегистрированы, прежде чем я удалил их.
Я предпочел бы обновить сборку, и чтобы SQL Server начал ее использовать.
Обновление : я случайно попытался DBCC FREEPROCCACHE
принудительно «перекомпилировать», но SQL Server все еще использует старый код.
Обновление : я удалил сборку dll CLRFunctions.dll
, и SQL Server все еще может выполнять код (без кода, который должен быть невозможным).