无法加载文件或程序集'Microsoft.SqlServer.Types'

29

我有一个网站应用程序,我们将其部署到生产环境中。我们为 WEB 和数据库分别配置了服务器。数据库使用的是 SQL Server 2008 版本,托管在完全不同的服务器上,而我们的 IIS 安装在另一台服务器上。

在我的 Web 服务器上,我们遇到了以下错误: 无法加载文件或程序集“Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”或其中一个依赖项。

我检查了 Web 服务器上的 GAC,发现缺少这个特定的 DLL 文件。对我来说这是合理的,因为这是一台 Web 服务器,不应该拥有与 SQL Server 相关的程序集。

我们的应用程序在开发、测试和预发布环境中运行得很好,因为我们的 IIS 和数据库都安装在同一台服务器上。

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


2
SVI- 您的应用程序依赖于 SQL 类型,因此您必须在安装应用程序的任何计算机上安装这些程序集。这就是为什么您必须将这些 SQL 位安装到您的 Web 服务器上的原因。功能包提供了支持 SQL 程序集的安装,而无需安装完整的服务器。 - Dave Swersky
7个回答

16

报表查看器需要这个类

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。这解决了我的问题。 - MickB

16

Microsoft SQL Server 2008 功能包

简要描述:

下载 Microsoft SQL Server 2008 功能包,这是一组独立的安装程序包,为 SQL Server 2008 提供附加值。具体而言,是 CLR 数据类型。

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


Dave,我很难理解为什么我应该在我的Web服务器上安装任何与SQL SERVER相关的组件。 - SVI
1
Dave,我明白你的意思了。你是说,我应该安装Microsoft SQL Server System CLR Types吗?描述: SQL Server System CLR Types包含在SQL Server 2008中实现新几何、地理和层次结构类型的组件。此组件可以单独从服务器安装,以允许客户端应用程序在服务器外部使用这些类型。 - SVI
3
因为您希望使用SQL Server的空间类型。 - Cornelius
我们使用AWS和Microsoft Windows Server 2012 R2连接到SQL Server 2014时,使用一些旧的dll文件,这被证明是正确的。其中特定版本的“Microsoft SQL Server 2008 Feature Pack” CLR Types安装了10.0.xx版本,解决了此处抛出的错误。 - iowatiger08
我在一台已安装 SQL Server 的机器上遇到了这个错误。即使 SQL Server 已经安装,我是否仍需要安装功能包? - Christian Findlay
@MelbourneDeveloper 空间类型可能不会默认安装,因此即使已经安装了SQL Server,您也可能需要显式安装它们。 - Dave Swersky

8
最佳解决方案是安装Microsoft.SqlServer.Types NuGet程序包。
PM> Install-Package Microsoft.SqlServer.Types

请按照 readme.htm 文件的说明操作。


1
另外,一旦NuGet包被安装,您可以确保将DLL引用属性设置为“复制本地=true”。 - John M
Nuget可能会安装最新版本,但是服务器可能需要客户端使用旧版本,因此这不是正确的答案。 - dexiang

7

1

当出现这个错误时,我只需点击“继续”按钮即可忽略它。一旦安装完成,似乎并不影响2008 R2服务器的运行。我正在运行Windows 7 64位操作系统。


0
请查看此论坛帖子: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 另外,您也可以通过NuGet下载它们(这就是我所做的)。只需搜索“MICROSOFT® REPORT VIEWER 2012 RUNTIME”,它们应该会出现 - 到目前为止最简单的方法。

-4

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接