Comment puis-je mettre à jour une dll d'assembly de fonction (ou procédure) CLR sans avoir à supprimer et recréer l'assembly dans SQL Server (2008 R2)?
Dans l'état actuel des choses si je mets à jour un assembly (par exemple pour ajouter une nouvelle fonction), SQL Server n'honorera pas la DLL mise à jour tant que je n'aurai pas déposé l'assembly:
DROP ASSEMBLY CLRFunctions
Msg 6590, Level 16, State 1, Line 1
DROP ASSEMBLY failed because 'CLRFunctions' is referenced by object 'NormalizeString'.
Mais avant de pouvoir supprimer l'assembly, je dois d'abord supprimer toutes les fonctions qui y font référence:
DROP FUNCTION NormalizeString
DROP FUNCTION RemoveDiacritics
DROP FUNCTION RemoveCombiningDiacritics
DROP FUNCTION CombineLigatures
....
DROP FUNCTION PseudolocalizeArabic
Et puis je peux déposer l'assemblage:
DROP ASSEMBLY CLRFunctions
Maintenant je dois " créer " l'assemblage:
CREATE ASSEMBLY CLRFunctions FROM 'c:\foos\CLRFunctions.dll';
Et maintenant, je dois rechercher la déclaration de tous les UDF qui ont été enregistrés avant de les supprimer.
je préfère mettre à jour un assemblage et demander à SQL Server de commencer à l'utiliser.
Mise à jour : j'ai essayé DBCC FREEPROCCACHE
au hasard de forcer une "recompilation", mais SQL Server utilise toujours l'ancien code.
Mise à jour : j'ai supprimé la DLL d'assembly CLRFunctions.dll
et SQL Server est toujours en mesure d'exécuter le code (sans code qui devrait être impossible).