錯誤 #: 490 (SQL Hotfix)
摘要
當您嘗試升級或降級 Microsoft SQL Server 2005年的執行個體中的通用語言執行階段 (CLR) 物件的組件時,您無法變更組件的中繼資料中參考的組件的版本。此外,如果您使用強式名稱的組件的 CLR 物件時,您就無法使用變更的組件陳述式降級組件。
簡介
本文說明如何升級或降級具有 CLR 物件中的 SQL Server 2005 執行個體的參考組件的組件。
更多的資訊
如何升級或降級組件
在 SQL Server 2005,您可以使用升級或降級成獨立的組件不是建立強式名稱的改變的組件的陳述式。對於強式名稱的組件,您可以升級,但無法降級使用變更的組件陳述式的組件。
您無法升級或降級下列案例中的組件:
-
組件 A 會建立 CLR 物件執行個體中。組件 A 具有參考的組件。參考的組件是組件 b。
-
組件 B 具有參考的組件。
-
如果要在重新編譯組件 A 參考不同版本的組件 b。
在這個案例中,您可以使用升級到新版的組件 B 的變更的組件的陳述式。如果組件 B 不是強式名稱的組件,您也可以降級到舊的版本的組件 B。不過,您無法在升級或降級到重新編譯過的版本的組件 A 使用變更的組件的陳述式。
因為 SQL Server 會建立 CLR 融合原則,當您建立組件 a 時,就會發生這個問題這個 CLR 融合原則會自動將對應的組件 B SQL Server 的實際版本的 A 載入在執行階段,當您升級或降級到某些其他版本的組件 B 的組件 B 的新版本的組件中繼資料中的組件 B 的版本。即使組件 A 參考的組件 b 的原始版本,就會發生這個問題不過,當您嘗試升級或降級組件 A,當組件 A 會包含中繼資料中的組件 B 的新版本時,變更的組件的陳述式將會失敗,並且您收到類似下列的錯誤訊息:
錯誤訊息 1
訊息 6529,層次 16,狀態 1,行 1
參考的組件 'RefAsm' 的識別已經變更,就會無法變更組件。請確定版本、 名稱和公開金鑰維持不變。
錯誤訊息 2
訊息 6282,層次 16,狀態 1,行 1
參考的組件將會變更,就會無法變更組件。參考的組件清單必須維持不變。
升級或降級組件
注意事項
-
這些步驟升級或降級的情況中,「 如何升級或降級組件 > 一節中所說明的組件 A。
-
本範例假設兩個組件的版本是 1.0.0.0 和組件兩者都寫成 C#。當您遵循這些步驟時,您會嘗試升級到版本 2.0.0.0 的組件 A 和 B 組件。
若要升級或降級組件 A,請依照下列步驟執行。
-
備份組件 B 的版本 1.0.0.0 到資料夾。
-
修改,然後再重新編譯組件 B 版本 2.0.0.0。
-
若要升級 SQL Server 2005 中的組件 B 使用變更的組件陳述式。
-
修改,然後再重新編譯組件 A 的版本 2.0.0.0。當您這樣做,請從您在步驟 1 所做的備份組件 B 的參考版本 1.0.0.0。若要這樣做,請使用 「 Csc.exe 編譯器工具 」 搭配/reference參數。例如,使用下列命令:
csc /target:library /out:件的零件.dll件的零件.cs AssemblyInfo.cs /reference: 「BackupFolder\AssemblyB.dll"注意若要確認組件 A 的中繼資料中的組件 B 的版本,請使用 Ildasm.exe 公用程式以開啟組件 A。然後,確認參考的組件資訊清單] 區段下的中繼資料資訊。
-
您可以使用 [變更組件陳述式,升級 SQL Server 2005 中的組件 A。
如何降級強式名稱的組件
如果您使用強式名稱的組件的 CLR 物件時,SQL Server 2005 不支援使用降級組件的變更的組件陳述式。如果您嘗試使用變更的組件陳述式降級的組件的版本,您會收到類似下列的錯誤訊息:
訊息 6579,層次 16,狀態 1,行 1
變更從組件 'Asm1,版本 = 1.1.0.0,文化特性 = 中性,publickeytoken = 3a52b896cff0513d,processorarchitecture = msil' 到' Asm1,版本 = 1.0.0.0,文化特性 = 中性,publickeytoken = 3a52b896cff0513d,processorarchitecture = msil' 不是相容的升級。
當您想要降級的強式名稱組件時,請遵循下列步驟:
-
卸除相依於組件的所有物件。
-
卸除組件的較新的版本。
-
建立組件的較舊的版本。
-
建立所有必要的物件相依於組件。
注意您可以使用變更的組件的陳述式來升級強式名稱的組件。不過,如果升級牽涉到參考的組件,您必須遵循相同的 「 升級或降級組件 」 一節中所列的步驟。
參考
如需有關變更組件的陳述式的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/ms186711.aspx如需有關 Ildasm.exe 公用程式的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/aa309387(VS.71).aspx