Como atualizar uma dll de assembly de função (ou procedimento) do CLR sem precisar soltar e recriar o assembly no SQL Server (2008 R2)?
Como está agora, se eu atualizar um assembly (por exemplo, para adicionar uma nova função), o SQL Server não honrará a dll atualizada até eu largar o assembly:
DROP ASSEMBLY CLRFunctions
Msg 6590, Level 16, State 1, Line 1
DROP ASSEMBLY failed because 'CLRFunctions' is referenced by object 'NormalizeString'.
Mas antes que eu possa descartar o assembly, devo primeiro descartar todas as funções que o referenciam:
DROP FUNCTION NormalizeString
DROP FUNCTION RemoveDiacritics
DROP FUNCTION RemoveCombiningDiacritics
DROP FUNCTION CombineLigatures
....
DROP FUNCTION PseudolocalizeArabic
E então eu posso largar a montagem:
DROP ASSEMBLY CLRFunctions
Agora eu tenho que " criar " a montagem:
CREATE ASSEMBLY CLRFunctions FROM 'c:\foos\CLRFunctions.dll';
E agora eu tenho que caçar a declaração de todas as UDFs que foram registradas antes de excluí-las.
eu prefiro atualizar um assembly e fazer com que o SQL Server comece a usá-lo.
Atualização : tentei aleatoriamente DBCC FREEPROCCACHE
forçar uma "recompilação", mas o SQL Server ainda usa o código antigo.
Atualização : excluí a dll do assembly CLRFunctions.dll
e o SQL Server ainda pode executar o código (sem o código que deveria ser impossível).