我有一个包含大约 400 行地理数据的表,我正在使用该STWithin
方法来确定一个点是否存在于其中一个行的边界内。
在我的测试服务器上它工作正常。但是,对于最新版本的数据集,查询在实时服务器上对这些数据行之一失败。如果我从查询中排除该行,那么它会成功。
错误是:
消息 6522,第 16 层,状态 1,第 3 行
执行用户定义的例程或聚合“几何”期间发生 .NET Framework 错误:System.ArgumentException:24144:此操作无法完成,因为实例无效。使用 MakeValid 将实例转换为有效实例。请注意,MakeValid 可能会导致几何实例的点稍微移动。
查询的简化版本是:
DECLARE @Point GEOMETRY = GEOMETRY::Point(416420, 345058, 0)
SELECT *
FROM PolygonData
WHERE @Point.STWithin(GeoField) = 1
测试服务器是 SQL Server 2012 (11.0.2100.60),实时服务器是 SQL Server 2012 (11.0.6544.0)。
我不明白为什么相同的数据会在一台服务器上成功而在另一台服务器上失败?非常感谢任何帮助,谢谢。