c# - 无法加载 SqlServerSpatial.dll

标签 c# .net sql-server clr geospatial

我正在尝试在 C# .Net 项目中使用 SqlServer Spatial CLR 类型。 我想使用 SqlGeometry 从我的数据库中查询空间记录。

在 Visual Studio 2010 中运行的单元测试中,我在我的本地计算机上运行了此功能,并命中了远程 SqlServer 计算机。一切顺利。

然后,我将一个 WCF Rest 服务发布到我的本地 IIS 实例,该实例的服务与单元测试相同的类库以执行一些空间查询,但它失败了。

我得到一个错误提示

Unable to load DLL SqlServerSpatial.dll : The specified module could not be found.

我用谷歌搜索了这个并找到了很多很多答案 - 没有一个对我有用。 我有:

  • 向 GAC 注册了 CLR 类型
  • 安装 64 位版本,稍后安装 32 位版本的 VC++
  • 尝试了多种使用不同 Microsoft.SqlServer.Types dll 版本的方法

我唯一没有做过并且坦白说拒绝做的事情就是在实际的 SqlServer 机器上安装任何东西。这对我来说似乎没有必要。

在这一点上,我能想到的唯一原因是权限问题,因为它在 IIS 应用程序池中运行,而不是在它在单元测试中工作的 Studio 中运行。

请注意,在我的项目中,我从不引用错误消息中提到的 dll。该 dll 存在于 sql 框中,但我无法将其添加到工作室,因为当我尝试添加时它会给出一些消息。 我在这里尝试的东西已经用完了。又是 90 年代的 hell 。

最佳答案

我在 Windows Server 2012 机器上遇到了同样的问题。它在\Windows\System32 中有一个 SqlServerSpatial110.dll 文件,但没有 SqlServerSpatial.dll。解决方案是在计算机上安装适用于 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. 点击下一步

关于c# - 无法加载 SqlServerSpatial.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14265845/

相关文章:

c# - 我应该为数据库表使用多个 View 模型吗?

c# - 动态添加样式标签到 ASP.Net 网页

SQL Server - 显示当月内的日期

.net - C# .NET Compact Framework,自定义 UserControl,焦点问题

java - 创建与 SQL Server 的 JDBC 连接时权限被拒绝

sql-server - 关闭隐式事务

c# - TimeZoneInfo.ConvertTimeToUtc 与 TimeZone.ToUniversalTime 与 DateTime.ToUniversalTime

c# - 您使用哪个 .NET Memcached 客户端,EnyimMemcached 与 BeITMemcached?

.net - 即使使用默认应用程序,Azure 诊断也不存储数据

c# - .NET WCF w3wp native 内存泄漏和加载程序堆中 0 大小的 18k 动态程序集