0

在 SQL Server 2005 中创建 .NET 程序集之后,当 MS 发布 .NET 服务包/错误修复程序然后通过通常的 Microsoft 更新安装时,我需要做些什么吗?SQL 程序集是指向原始 .NET .dll 的链接,还是 SQL Server 有自己的私有副本?

4

2 回答 2

2

在 SQL Server 2005 中创建 .NET 程序集之后,当 MS 发布 .NET 服务包/错误修复程序然后通过通常的 Microsoft 更新安装时,我需要做些什么吗?

这取决于。SQL Server CLR 集成不支持每个 .NET 程序集,请参阅SQL Server CLR 托管环境中未经测试的 .NET Framework 程序集的支持策略。如果您将自己限制为受支持的程序集(如下),那么您无需执行任何操作。

  • Microsoft.VisualBasic.dll
  • mscorlib.dll
  • 系统数据.dll
  • 系统.dll
  • System.Xml.dll
  • Microsoft.VisualC.dll
  • CustomMarshalers.dll
  • System.Security.dll
  • System.Web.Services.dll
  • System.Data.SqlXml.dll
  • System.Transactions.dll
  • System.Data.OracleClient.dll
  • System.Configuration.dll

但是,如果您引用未经测试的程序集,您可能会收到错误,因为

当 CLR 加载程序集时,CLR 会验证同一个程序集是否在 GAC 中。如果相同的程序集在 GAC 中,CLR 会验证这些程序集的模块版本 ID (MVID) 是否匹配。如果这些程序集的 MVID 不匹配,您会收到“症状”部分提到的错误消息。

重新编译程序集时,程序集的 MVID 会更改。因此,如果您更新 .NET Framework,则 .NET Framework 程序集具有不同的 MVID,因为这些程序集被重新编译。此外,如果您更新自己的程序集,则会重新编译该程序集。因此,程序集也有不同的 MVID。

执行 CLR 例程或在 SQL Server 2005中使用程序集时出现错误消息:“主机存储中的程序集与 GAC 中的程序集具有不同的签名。(来自 HRESULT 的异常:0x80131050)”http://support.microsoft.com/ KB/949080

如果您确实遇到这种情况,您需要做的就是使用 ALTER ASSEMBLY 语句重新指向新程序集

于 2012-04-13T16:18:40.460 回答
0

当 MS 发布 .NET 服务包/错误修复,然后通过通常的 Microsoft 更新安装时,我需要做些什么吗?

不会。修复通常应用于运行时本身,因此您不需要重新构建程序集或任何东西。

SQL 程序集是指向原始 .NET .dll 的链接,还是 SQL Server 有自己的私有副本?

SQL Server 会为自己保留副本,您可以在sys.assembly_files视图中看到这些副本。

于 2012-04-13T15:49:33.707 回答