SQL Server SSDT项目中geometry空间数据类型无法识别问题求助
问题
我有一个引用平面空间数据类型geometry的常规SQL Server视图,将该数据库视图导入SSDT项目时,抛出如下异常:
SQL70561: Cannot schema bind view 'MyView' because name 'geometry' is invalid for schema binding. Names must be in a two-part format and an object cannot reference itself.
我的Visual Studio中的SQL Server数据库项目目标SQL Server版本为2016,项目似乎无法识别geometry类型。
Visual Studio截图说明:截图中geometry类型被标记为红色波浪线,IDE提示无法识别该类型。
解决步骤
核对项目配置与类型引用
- 右键SSDT项目 → 属性 → 进入“项目设置”标签,确认目标平台为SQL Server 2016(版本13.0)。
- 确保项目已添加
Microsoft.SqlServer.Types引用:右键项目 → 添加 → 引用 → 切换到“扩展”标签,找到并勾选Microsoft.SqlServer.Types(对应2016版本的程序集版本应为13.x)。如果找不到该扩展,直接通过NuGet安装Microsoft.SqlServer.Types包,指定版本为13.0.0.0。
修正视图的架构绑定语法
架构绑定要求所有引用的对象、类型必须使用双部分名称,geometry属于sys架构下的系统类型,因此需要显式指定sys.geometry:CREATE VIEW dbo.MyView WITH SCHEMABINDING AS SELECT Id, CAST(Location AS sys.geometry) AS Location FROM dbo.MyTable WHERE ...如果视图中调用了
geometry相关函数(如STGeomFromText),同样要指定架构前缀,比如sys.STGeomFromText('POINT(10 20)', 4326)。刷新并重新生成项目
修改完成后,右键项目选择“刷新”,再执行“重新生成”,检查错误是否消除。
内容的提问来源于stack exchange,提问作者Mukesh Kumar
相关产品推荐
相关产品推荐

