You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决控制台应用中Microsoft.SqlServer.Types空间类型及函数不可用问题?

解决SQL Server 2016空间类型不可用的问题

我之前做控制台导入CSV到SQL Server 2016的项目时,也踩过这个一模一样的坑!给你几个亲测有效的解决步骤,按顺序试试:

  • 先核对NuGet包版本是否匹配
    SQL Server 2016对应的Microsoft.SqlServer.Types版本是13.x系列(因为SQL Server 2016内部版本是v13),如果你装的是更高版本(比如14+),很可能会出现兼容性问题。建议先卸载现有包,然后安装对应版本:

    Uninstall-Package Microsoft.SqlServer.Types
    Install-Package Microsoft.SqlServer.Types -Version 13.0.1700.0
    
  • 手动加载本地程序集
    控制台应用不像Web应用会自动加载这个程序集的本地依赖,所以得在程序启动的地方(比如Main方法开头)加一行代码:

    using Microsoft.SqlServer.Types;
    
    // 在程序初始化时加载
    SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
    

    这行代码会帮你加载对应的x86/x64本地库,避免找不到空间类型的问题。

  • 检查SQL Server 2016的空间组件
    有时候本地SQL Server 2016在安装时没勾选空间数据组件,也会导致这个错误。去控制面板的「程序和功能」里找到SQL Server 2016,点击「更改」,然后在功能选择界面确认「空间数据」相关选项已经勾选,完成修复安装。

  • 添加版本绑定重定向(如果有版本冲突)
    如果你的项目里还有其他依赖不同版本Microsoft.SqlServer.Types的包,会出现版本冲突。在app.config里添加以下配置:

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

    把newVersion改成你实际安装的NuGet包版本号即可。

你找到的那篇博客应该也覆盖了程序集加载和版本匹配的核心点,结合上面的步骤应该就能解决这个问题了!

内容的提问来源于stack exchange,提问作者Rod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:08:07