错误 #: 490 (SQL 修补程序)

概要

当您尝试升级或降级的 Microsoft SQL Server 2005年实例中公共语言运行时 (CLR) 对象的程序集时,您无法更改程序集的元数据中引用的程序集的版本。此外,如果您使用具有强名称的程序集的 CLR 对象时,不能通过使用更改集语句降程序集。

简介

本文介绍如何升级或降级具有 CLR 对象的 SQL Server 2005 实例中引用的程序集的程序集。

详细信息

如何升级或降级程序集

在 SQL Server 2005 中,可以使用更改集语句来升级或降级独立程序集不是具有强名称创建。具有强名称的程序集,您可以升级,但不能通过使用更改集语句降级程序集。

您无法升级或降级以下方案中的程序集:

  • 为实例中的 CLR 对象创建程序集 A。程序集 A 具有引用的程序集。引用的程序集是程序集 b。

  • 程序集 B 中有没有被引用的程序集。

  • 重新编译的程序集引用不同版本的程序集 b。

在这种情况下,您可以更改程序集语句用于升级到新版本的程序集 B。如果组件 B 不是具有强名称的程序集,您也可以降级到旧版本的程序集 B。但是,不能使用变更集语句进行升级或降级到重新编译的版本的程序集 A。

这种现象出现的原因是 SQL Server 创建 CLR 合成策略,当您创建程序集 a。该 CLR 合成策略会自动映射 B 在 A 到实际程序集 B.SQL Server 版本加载运行时,当您升级或降级到另一个版本的程序集 B 中的程序集 B 的新版本的程序集的元数据的程序集的版本。这种现象出现,即使程序集 A 指的是原始版本的程序集 b。但是,当您尝试升级或降级程序集 A,当程序集 A 包含元数据中的程序集 B 的新版本时,变更集语句将失败,您收到类似于以下内容的错误消息:

错误消息 1

Msg 6529,级别 16 状态 1,第 1 行

更改程序集失败,因为已更改引用的程序集 RefAsm 的标识。请确保未更改版本、 名称和公钥。

错误消息 2

Msg 6282,级别 16 状态 1,第 1 行

更改程序集失败,因为引用的程序集将会更改。引用的程序集列表必须保持不变。

升级或降级程序集

备注:

  • 以下步骤升级或降级程序集 A 中的"如何升级或降级程序集"一节中所述的方案。

  • 本示例假定两个程序集的版本为 1.0.0.0 和程序集都用 C# 编写。当您执行这些步骤时,您尝试升级到 2.0.0.0 版的程序集 A 和 B 的程序集。

若要升级或降级程序集 A,请按照下列步骤。

  1. 程序集 B 的版本 1.0.0.0 备份到文件夹。

  2. 修改,然后重新编译的程序集 B 版本 2.0.0.0。

  3. 使用变更集语句升级 SQL Server 2005 中的程序集 B。

  4. 修改,然后重新编译的程序集 A 到 2.0.0.0 版本。当您执行此操作,请从步骤 1 中备份的程序集 B 的引用版本 1.0.0.0。若要执行此操作,使用 Csc.exe 编译器工具和结合使用/reference开关。例如,使用下面的命令:

    csc /target:library/输出:AssemblyA.dll AssemblyA.cs AssemblyInfo.cs /reference:"BackupFolder\AssemblyB.dll"注意:若要验证的程序集 B 中的元数据的程序集的版本,请使用 Ildasm.exe 工具打开程序集 A。然后,验证下的清单部分中引用的程序集的元数据信息。

  5. 使用变更集语句升级 SQL Server 2005 中的程序集 A。

如何将降级具有强名称的程序集

如果您使用具有强名称的程序集的 CLR 对象时,SQL Server 2005 不支持使用变更集语句降级程序集。如果您尝试通过使用更改集语句降级版本的程序集,您将收到类似于以下内容的错误消息:

Msg 6579,级别 16 状态 1,第 1 行
改变从程序集 Asm1,版本 = 1.1.0.0,区域性程序 = 3a52b896cff0513d,processorarchitecture = msil' 到 ' Asm1,版本 = 1.0.0.0,区域性程序 = 3a52b896cff0513d,processorarchitecture = msil' 不是兼容的升级。

当您想要降级的强名称程序集时,请执行以下步骤:

  1. 删除所有依赖程序集的对象。

  2. 删除程序集的新版本。

  3. 创建程序集的早期版本。

  4. 创建所有必需的对象取决于该程序集。

注意:您可以通过使用更改集语句升级具有强名称的程序集。但是,如果升级涉及到引用的程序集,则必须按照"升级或降级程序集"一节中列出的相同步骤。

参考资料

有关更改程序集的语句的详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) Web 站点:

http://msdn2.microsoft.com/en-us/library/ms186711.aspx关于 Ildasm.exe 实用程序的详细信息,请访问下面的 MSDN 网站:

http://msdn2.microsoft.com/en-us/library/aa309387(VS.71).aspx

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?

哪些因素影响了你的体验?

是否还有其他反馈?(可选)

谢谢您的反馈意见!

×