无法加载DLL“SqlServerSpatial.dll”

问题描述 投票:0回答:9

我有一个引用

System.Data.Spatial
的 .NET MVC Web 应用程序,因此我可以在属性上使用
DbGeography
数据类型来进行某些地理定位。我正在使用带有 .NET 4.5 的 Visual Studio 2012,并且在我的开发计算机上没有完整安装 SQL Server(仅 localdb)。

该应用程序运行良好,直到我将其推送到 Azure。一旦我的应用程序点击我的

DbGeography
属性,它就会抛出此错误:

无法加载DLL“SqlServerSpatial.dll”:指定的模块可能 找不到。

还有其他人遇到过这个问题吗?

.net sql-server azure
9个回答
15
投票

SqlServerSpatial.dll 是非托管代码。您必须在服务器上安装正确的版本(64 位)。将 DLL 添加到您的项目中。将 SqlServerSpatial110.dll 的属性设置为“复制到输出目录 = 始终复制”

您可以在这里找到详细信息


3
投票

SQL 2012 也安装这个 dll,SQL 2014 则不安装!您必须在计算机上安装 SQL Server 2008 R2 的 Microsoft System CLR Types。

  1. http://www.microsoft.com/en-us/download/details.aspx?id=26728
  2. 点击下载
  3. 根据您的处理器架构勾选其中一项

    • 1033\x64\SQLSysClrTypes.msi
    • 1033\x86\SQLSysClrTypes.msi
    • 1033\IA64\SQLSysClrTypes.msi
  4. 单击下一步

编辑

正如

Ian Grainger
的评论,你必须根据你的IIS安装正确的版本。显然 IIS Express 默认以 32 位模式运行。


2
投票
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
  <assemblyIdentity name="Microsoft.SqlServer.Types" 
  publicKeyToken="89845dcd8080cc91" culture="neutral" />
  <bindingRedirect oldVersion="10.0.0.0" newVersion="12.0.0.0" />
  </dependentAssembly>
  </assemblyBinding>
</runtime>

1
投票

我遇到了这个问题,并且确实缺少 SqlServerSpatial110.dll

我最终按照此处的说明进行操作:

http://dllyes.com/sqlserverspatial110-dll/

基本上,您需要获得该 .dll,然后

将 SqlServerSpatial110.dll 放入 \Windows\System32(通常位于 磁盘 C) 如果您运行的是 32 位 Windows。如果您运行的是 64 位 Windows,另外将文件放置在 \Windows\SysWOW64 中。


0
投票

我为此苦苦挣扎了相当长一段时间,我安装了所需的文件,但它仍然无法正常工作。

显然,该项目想要使用x86 SqlServerSpatial.dll 所以我在“工具”>“选项”>“WebProjects”>“使用 64 位 IIS”中将 IIS Express Build 更改为 x64 Here is the screen

无需添加新的 nuget 包,只需从 microsoft 页面安装 SQLSysClrTypes 即可:http://go.microsoft.com/fwlink/?LinkID=188391&clcid=0x409 应该没问题;)

希望它对某人有帮助!


0
投票

确保您的 dll(例如“sqlserverspatial110.dll”、“sqlserverspatial120.dll”、..)位于“C:\Windows\SysWOW64”路径中;


0
投票

如果项目中正确引用了文件并将其添加到源代码管理中,但问题仍然存在,请尝试在出现故障的计算机上安装 Microsoft System CLR Types for SQL Server。

- 安装与中引用的 SqlServerTypes 匹配的版本 项目。

-安装与项目所使用的版本匹配的 64 位或 32 位版本。

Version | Assembly
2005    | 9.0.0.0
2008    | 10.0.0.0
2008 R2 | 10.0.0.0
2012    | 11.0.0.0
2014    | 12.0.0.0
2016    | 13.0.0.0
2017    | 14.0.0.0
2019    | 15.0.0.0
2022    | 16.0.0.0

-1
投票
  • SqlGeometry
    SqlGeography
    类型可以在 VS 项目中使用(例如 C#) 通过引用
    Microsoft.SqlServer.Types.dll
    .
  • Microsoft.SqlServer.Types.dll
    是一个托管库,有一些 非托管库作为先决条件,它们就像
    SqlServerSpatialXXX.dll
    msvcrXXX.dll
  • 从 Sql Server 2008 开始,不同版本的
    Microsoft.SqlServer.Types.dll
    可用,但是我没有看到任何 从 2012 年起功能发生变化。

有关详细的解决方案,您可能想在另一篇类似的帖子上查看我的answer


-1
投票
I had the same issue in godaddy VPS with windows server 2012 r2

我通过将 EF5 更新到 EF6 解决了这个问题

在包管理器控制台中运行 EF5 到 EF lalest

Install-Package EntityFramework 
© www.soinside.com 2019 - 2024. All rights reserved.