¿Cómo puedo actualizar un dll de ensamblaje de función (o procedimiento) CLR sin tener que soltar y volver a crear el ensamblaje en SQL Server (2008 R2)?
Tal como está ahora si actualizo un ensamblaje (por ejemplo, para agregar una nueva función), SQL Server no respetará el dll actualizado hasta que deje el ensamblaje:
DROP ASSEMBLY CLRFunctions
Msg 6590, Level 16, State 1, Line 1
DROP ASSEMBLY failed because 'CLRFunctions' is referenced by object 'NormalizeString'.
Pero antes de que pueda soltar el ensamblaje, primero debo soltar todas las funciones que hacen referencia a él:
DROP FUNCTION NormalizeString
DROP FUNCTION RemoveDiacritics
DROP FUNCTION RemoveCombiningDiacritics
DROP FUNCTION CombineLigatures
....
DROP FUNCTION PseudolocalizeArabic
Y luego puedo soltar el ensamblaje:
DROP ASSEMBLY CLRFunctions
Ahora tengo que " crear " el ensamblaje:
CREATE ASSEMBLY CLRFunctions FROM 'c:\foos\CLRFunctions.dll';
Y ahora tengo que buscar la declaración de todos los UDF que se registraron antes de eliminarlos.
Prefiero actualizar un ensamblado y hacer que SQL Server comience a usarlo.
Actualización : al azar intenté DBCC FREEPROCCACHE
forzar una "recompilación", pero SQL Server todavía usa el código anterior.
Actualización : eliminé el dll de ensamblado CLRFunctions.dll
y SQL Server aún puede ejecutar el código (sin código, eso debería ser imposible).