我正在尝试在 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。
- http://www.microsoft.com/en-us/download/details.aspx?id=26728
- 点击下载
根据您的处理器架构勾选其中一项:
- 1033\x64\SQLSysClrTypes.msi
- 1033\x86\SQLSysClrTypes.msi
- 1033\IA64\SQLSysClrTypes.msi
点击下一步
关于c# - 无法加载 SqlServerSpatial.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14265845/