【问题标题】:Could not load file or assembly 'Microsoft.SqlServer.Types无法加载文件或程序集“Microsoft.SqlServer.Types
【发布时间】:2010-12-10 04:37:05
【问题描述】:

我有一个我们部署在生产环境中的 Web 应用程序。 我们有独立的 WEB 和数据库服务器。数据库是 SQL Server 2008,它托管在完全不同的服务器上,我们将 IIS 安装在不同的服务器上。

在我的网络服务器上,我们收到以下错误。 无法加载文件或程序集 'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' 或其依赖项之一

我检查了 Web 服务器上的 GAC,它缺少这个特定的 DLL。这对我来说很有意义,因为它是一个 Web 服务器,它不应该有与 SQLServer 相关的程序集。

我们的应用程序在我们的开发、测试和暂存环境中运行良好,因为我们的 IIS 和 DB 安装在同一台服务器上。

如何在生产中解决这个问题?我可以通过在 Web 服务器上安装 SQL Server 2008。但这对我来说没有意义。它是一个 Web 服务器 - 我为什么要在那台机器上安装 SQL Server 2008?

【问题讨论】:

  • SVI- 您对应用程序中的 SQL 类型有依赖关系,因此您必须在安装应用程序的任何机器上都有这些程序集。这就是为什么您必须将这些 SQL 位安装到您的网络服务器。提供了功能包,以便您无需安装完整的服务器即可安装支持的 SQL 程序集。
  • 是的。我现在明白了。感谢您的信息和解释。

标签: sql-server-2008 production-environment


【解决方案1】:

Microsoft SQL Server 2008 Feature Pack

简要说明:

下载 Microsoft SQL Server 2008 功能包,这是一组独立安装包,可为 SQL Server 2008 提供额外价值。特别是 CLR 数据类型。

注意:2013 年 1 月更新了功能包链接

【讨论】:

  • Dave,我很难理解为什么要在我的 Web 服务器上安装任何与 SQL SERVER 相关的组件。
  • 戴夫,我知道你来自哪里......你的意思是,我应该安装 Microsoft SQL Server System CLR Types 描述:SQL Server System CLR Types 包包含实现新几何、地理、 SQL Server 2008 中的和 hierarchyid 类型。此组件可以与服务器分开安装,以允许客户端应用程序在服务器之外使用这些类型。
  • 因为要使用 SQL Server 空间类型。
  • 事实证明,我们使用 AWS 和 Microsoft Windows Server 2012 R2 连接到 SQL Server 2014 使用一些旧版 dll,其中特定版本“Microsoft SQL Server 2008 Feature Pack”CLR Types 安装10.0.xx 解决了这里抛出的错误。
  • 我在已安装 SQL Server 的计算机上收到此错误。即使已经安装了 SQL Server,我是否还需要安装功能包?
【解决方案2】:

报表查看器需要这个类

Microsoft.ReportViewer.Common.dll
Microsoft.ReportViewer.ProcessingObjectModel.dll
Microsoft.ReportViewer.WebForms.dll
Microsoft.ReportViewer.WinForms.dll
Microsoft.ReportViewer.DataVisualization.dll
Microsoft.SqlServer.Types.dll

【讨论】:

  • 我使用 NuGet 安装 Microsoft.SqlServer.Types。这解决了我的问题。
【解决方案3】:

最好的解决方案是安装 Microsoft.SqlServer.Types NuGet 包。

PM> Install-Package Microsoft.SqlServer.Types

并按照其 readme.htm 中的说明进行操作

【讨论】:

  • 另外 - 安装 nuget 包后,您可以确保将 dll 引用属性设置为 'copy local = true'
  • nuget 可能会安装最新版本,但是服务器可能要求客户端使用旧版本,所以这不是正确的答案。
【解决方案4】:

正如@Dave Swersky 所说,需要 Microsoft SQL Server 2008 功能包

但链接已更改为:

SQL Server® 2008 R2 的 Microsoft® System CLR 类型:

X86 包(SQLSysClrTypes.msi):http://go.microsoft.com/fwlink/?LinkID=188391&clcid=0x409 X64 包(SQLSysClrTypes.msi):http://go.microsoft.com/fwlink/?LinkID=188392&clcid=0x409

使用原始链接会得到一个文本文件,说明包已经分开

【讨论】:

    【解决方案5】:

    当错误出现时,我只需按“继续”按钮即可忽略此错误。安装完成后,它似乎不会影响 2008 R2 服务器的操作。我正在运行 Windows 7 64 位。

    【讨论】:

      【解决方案6】:

      请看这个论坛帖子:https://social.technet.microsoft.com/Forums/sharepoint/en-US/7e673dde-dfca-4b1a-a840-025a2ae9ee58/reportviewer-msi-is-missing-microsoftsqlservertypesdll?forum=sqlreportingservices

      第一反应。您实际上可以下载可再发行报表查看器运行时 .dll 并将其添加到您的项目中,以便将它们部署到没有这些文件的机器上。

      以及实际下载 VS 2012 运行时的链接:http://www.microsoft.com/EN-US/download/confirmation.aspx?id=35747

      PS 你也可以通过 NuGet 下载它们(我就是这样做的)。只需搜索“MICROSOFT® REPORT VIEWER 2012 RUNTIME”,它们就会出现 - 迄今为止最简单的方法

      【讨论】:

        【解决方案7】:

        对我来说关闭应用程序并重新打开它解决问题

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-12-04
          • 1970-01-01
          • 1970-01-01
          • 2020-11-03
          • 1970-01-01
          • 2020-08-17
          相关资源
          最近更新 更多