Як я можу оновити функцію CLR (або процедуру) збирання dll без необхідності скидати та заново створювати збірку в 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';
І тепер мені потрібно полювати на декларацію всіх ОДС, які були зареєстровані до того, як я їх видалив.
Я б скоріше оновив збірку, і SQL Server почав би її використовувати.
Оновлення : я випадковим чином намагався DBCC FREEPROCCACHE
примусити "перекомпілювати", але SQL Server все ще використовує старий код.
Оновлення : я видалив dll збирання CLRFunctions.dll
, і SQL Server все ще може запустити код (без коду, який повинен бути неможливим).