我有一個Trigger.dll和Trigger.XmlSerializer.dll。
我使用CREATE ASSEMBLY在MSSQL中註冊它們。
現在,我編譯了兩個版本。
我想使用ALTER ASSEMBLY來更新它們,但是一次只能更新一個。如果你嘗試更新一個具有依賴性的東西,它會抱怨。這樣做的訣竅是什麼?
我不想刪除並重新創建,因爲我必須刪除所有觸發器等,並且存在數據庫停機時間。
我有一個Trigger.dll和Trigger.XmlSerializer.dll。
我使用CREATE ASSEMBLY在MSSQL中註冊它們。
現在,我編譯了兩個版本。
我想使用ALTER ASSEMBLY來更新它們,但是一次只能更新一個。如果你嘗試更新一個具有依賴性的東西,它會抱怨。這樣做的訣竅是什麼?
我不想刪除並重新創建,因爲我必須刪除所有觸發器等,並且存在數據庫停機時間。
根據microsoft support您可以使用它的技巧。
注
要升級或降級組件A,請按照下列步驟操作。
我擔心丟掉桌子並重新創建桌子是唯一的方法。
這樣做的主要原因是,如果將程序集更新到新版本,則存儲在程序集類型中的值不可用。
兩個建議:
1)一般來說,你可以通過使用ILMerge嵌入和內他們避免依賴。所以在大多數情況下,修改彙編語句應該足夠了。還沒有用SQLCLR自己嘗試過,但我會放棄它。
2)也許XML序列化程序集不是必需的?This article suggests it is only necessary when calling external web services inside SQL Server。這本身就是一個值得懷疑的設計,除非你是那些希望在MS SQL Server產品中託管所有業務服務的人之一,而不僅僅是在Windows中編寫自己的獨立服務(更容易安裝,管理和維護),即比「數據層無所不能」的反模式更多的n層模式。由於你的DLL被稱爲Triggers.dll,它不會建議它聲明任何類型或是一個Web服務代理。如果我錯過了使用XML序列化器的其他原因,那麼請詳細說明這一點。
你的sql版本是什麼? – Avram 2009-02-11 00:12:58