Jak mogę zaktualizować dll zestawu funkcji (lub procedury) CLR bez konieczności upuszczania i ponownego tworzenia zestawu w SQL Server (2008 R2)?
W obecnej sytuacji, jeśli zaktualizuję zestaw (np. Aby dodać nową funkcję), SQL Server nie zaakceptuje zaktualizowanej biblioteki DLL, dopóki nie upuszczę zestawu:
DROP ASSEMBLY CLRFunctions
Msg 6590, Level 16, State 1, Line 1
DROP ASSEMBLY failed because 'CLRFunctions' is referenced by object 'NormalizeString'.
Ale zanim mogę upuścić zestaw, muszę najpierw upuścić wszystkie funkcje, które się do niego odwołują:
DROP FUNCTION NormalizeString
DROP FUNCTION RemoveDiacritics
DROP FUNCTION RemoveCombiningDiacritics
DROP FUNCTION CombineLigatures
....
DROP FUNCTION PseudolocalizeArabic
A potem mogę upuścić zestaw:
DROP ASSEMBLY CLRFunctions
Teraz muszę „ utworzyć ” zespół:
CREATE ASSEMBLY CLRFunctions FROM 'c:\foos\CLRFunctions.dll';
A teraz muszę wyśledzić deklarację wszystkich UDF, które zostały zarejestrowane, zanim je usunąłem.
wolałbym zaktualizować zestaw i pozwolić, aby SQL Server zaczął go używać.
Aktualizacja : losowo próbowałem DBCC FREEPROCCACHE
wymusić „rekompilację”, ale SQL Server nadal używa starego kodu.
Aktualizacja : usunąłem dll zestawu CLRFunctions.dll
, a SQL Server nadal może uruchomić kod (bez kodu, który powinien być niemożliwy).