SQL Server(2008 R2)でアセンブリを削除して再作成することなく、CLR関数(またはプロシージャ)アセンブリdllを更新するにはどうすればよいですか?
(たとえば、新しい関数を追加するために)アセンブリを更新した場合、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';
そして今、私はそれらを削除する前に登録されたすべてのUDFの宣言を捜さなければなりません。
私はむしろアセンブリを更新し、SQL Serverにそれを使い始めさせたいです。
更新:ランダムにDBCC FREEPROCCACHE
「再コンパイル」を試みましたが、SQL Serverは引き続き古いコードを使用します。
更新:アセンブリdllを削除しましたがCLRFunctions.dll
、SQL Serverはコードを実行できます(不可能なはずのコードなし)。