Làm cách nào tôi có thể cập nhật dll hàm CLR (hoặc thủ tục) mà không phải bỏ và tạo lại cụm trong SQL Server (2008 R2)?
Vì hiện tại nếu tôi cập nhật một hội đồng (ví dụ để thêm một chức năng mới), SQL Server sẽ không tôn trọng dll được cập nhật cho đến khi tôi bỏ hội đồng:
DROP ASSEMBLY CLRFunctions
Msg 6590, Level 16, State 1, Line 1
DROP ASSEMBLY failed because 'CLRFunctions' is referenced by object 'NormalizeString'.
Nhưng trước khi tôi có thể bỏ tập hợp, trước tiên tôi phải bỏ tất cả các hàm tham chiếu đến nó:
DROP FUNCTION NormalizeString
DROP FUNCTION RemoveDiacritics
DROP FUNCTION RemoveCombiningDiacritics
DROP FUNCTION CombineLigatures
....
DROP FUNCTION PseudolocalizeArabic
Và sau đó tôi có thể thả lắp ráp:
DROP ASSEMBLY CLRFunctions
Bây giờ tôi phải " tạo " lắp ráp:
CREATE ASSEMBLY CLRFunctions FROM 'c:\foos\CLRFunctions.dll';
Và bây giờ tôi phải săn tuyên bố của tất cả các UDF đã được đăng ký trước khi tôi xóa chúng.
Tôi muốn cập nhật một hội đồng và SQL Server bắt đầu sử dụng nó.
Cập nhật : tôi đã cố gắng ngẫu nhiên DBCC FREEPROCCACHE
để buộc "biên dịch lại", nhưng SQL Server vẫn sử dụng mã cũ.
Cập nhật : tôi đã xóa dll lắp ráp CLRFunctions.dll
và SQL Server vẫn có thể chạy mã (không có mã nên không thể).