【发布时间】:2012-04-13 15:48:03
【问题描述】:
在 SQL Server 2005 中创建 .NET 程序集后,当 MS 发布 .NET 服务包/错误修复程序然后通过通常的 Microsoft 更新安装时,我需要做些什么吗? SQL 程序集是指向原始 .NET .dll 的链接还是 SQL Server 有自己的私有副本?
【问题讨论】:
标签: .net sql-server-2005 assemblies
在 SQL Server 2005 中创建 .NET 程序集后,当 MS 发布 .NET 服务包/错误修复程序然后通过通常的 Microsoft 更新安装时,我需要做些什么吗? SQL 程序集是指向原始 .NET .dll 的链接还是 SQL Server 有自己的私有副本?
【问题讨论】:
标签: .net sql-server-2005 assemblies
在 SQL Server 2005 中创建 .NET 程序集后,当 MS 发布 .NET 服务包/错误修复,然后通过通常的 Microsoft 更新安装时,我需要做些什么吗?
这取决于。 SQL Server CLR 集成不支持每个 .NET 程序集,请参阅Support policy for untested .NET Framework assemblies in the SQL Server CLR-hosted environment。如果您将自己限制在受支持的程序集(如下),那么您无需执行任何操作。
但是,如果您引用未经测试的程序集,您可能会收到错误,因为
当 CLR 加载程序集时,CLR 会验证相同的 大会在 GAC 中。如果相同的程序集在 GAC 中,则 CLR 验证这些程序集的模块版本 ID (MVID) 匹配。如果这些程序集的 MVID 不匹配,您会收到 “症状”部分提到的错误消息。
重新编译程序集时,程序集的 MVID 会更改。 因此,如果您更新 .NET Framework,则 .NET Framework 程序集具有不同的 MVID,因为这些程序集是 重新编译。此外,如果您更新自己的程序集,则 程序集被重新编译。因此,装配也有不同的 MVID。
如果您确实遇到这种情况,您只需使用 ALTER ASSEMBLY 语句重新指向新程序集
【讨论】:
当 .NET 服务包/错误修复由 MS 发布然后通过通常的 Microsoft 更新安装时,我需要做些什么吗?
没有。修复通常应用于运行时本身,因此您无需重新构建程序集或任何东西。
SQL 程序集是指向原始 .NET .dll 的链接还是 SQL Server 有自己的私有副本?
SQL Server 会为自己保留副本,您可以在 sys.assembly_files 视图中看到这些副本。
【讨论】: