ฉันจะอัปเดตแอสเซมบลี CLR ฟังก์ชัน (หรือขั้นตอน) ได้อย่างไรโดยไม่ต้องวางและสร้างแอสเซมบลีใน SQL Server (2008 R2) อีกครั้ง
เนื่องจากตอนนี้ถ้าฉันอัปเดตชุดประกอบ (เช่นเพื่อเพิ่มฟังก์ชั่นใหม่), 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 ยังคงสามารถเรียกใช้รหัสได้ (โดยไม่ต้องใช้รหัสที่เป็นไปไม่ได้)