【发布时间】:2012-07-10 05:19:08
【问题描述】:
我在一个包含其他空间类型的表中有一个文本字段。作为 SSIS 包的一部分,我使用此文本字段在同一个表上运行更新(作为 SQL 任务)并更新几何和地理列。我昨天能够成功运行以下查询
UPDATE Location
SET [Geometry] = geometry::STGeomFromText(ShapeText, 4326).MakeValid()
FROM Location
WHERE ShapeText IS NOT NULL
但是,今天它一直在抛出以下异常:
消息 6522,级别 16,状态 1,行 10 发生 .NET Framework 错误 在执行用户定义的例程或聚合“几何”期间: System.FormatException:24141:位置 65536 处应有一个数字 输入。
当我查看形状时,它绝对是一个有效的形状。所以问题不在于形状,而在于 SQL 最多只能从列中读取 65536 个字符。并且当 shapetext 少于 65536 个字符时有效。
如果有人能帮我解决这个问题并让我知道如何从文本字段中读取超过 65536 个字符,那就太好了。
【问题讨论】:
-
@RayToal:谢谢,但我仍然看到同样的异常
-
无法将形状文本存储为 varchar 或 nvarchar?它实际上是文本类型吗?
-
这是一种文本类型,我很快将其更改为 varchar(max) 以对其进行测试并再次运行查询,仍然是相同的异常。
-
我使用过超过 64k 的 varchar(max) 值。 SQL Server 本身没有问题。我怀疑问题是 StGeomFromText 和 MakeValid 之间的交互。
标签: sql ssis sql-server-2008-r2