【发布时间】:2010-09-18 20:41:07
【问题描述】:
我正在尝试在 SQL Server 2008 下创建一个包含 GEOMETRY 列及其计算变量的表。
考虑下表,其中计算列返回缓冲几何:
CREATE TABLE [dbo].[Test] (
[Geometry] GEOMETRY NOT NULL,
[Buffer] FLOAT NOT NULL,
[BufferedGeometry] AS ([Geometry].STBuffer([Buffer])) PERSISTED
);
问题在于它会导致以下错误:
消息 4994,第 16 级,状态 1,第 2 行 计算列“BufferedGeometry”在 表“测试”无法持久化 因为列类型“几何”, 是非字节序的 CLR 类型。
我搜索了 BOL 和网络,但似乎无法找到解决问题的方法。我真的希望它能够被持久化,这样我就可以有效地索引它。我可以在代码中设置它,但是我可能会出现不一致的数据,因为我在某个时间点需要这两个值。
有人玩过这个并知道解决方案或解决方法吗?
更新:Microsoft 已在 SQL Server 2012 中添加此功能。
【问题讨论】:
-
以下不起作用:
ALTER TABLE dbo.Period ADD [Interval] AS (geometry::STGeomFromText( 'LINESTRING (0 ' + CAST(CAST(DATEDIFF(SECOND, '19700101', StartDate) AS BIGINT) AS VARCHAR(20)) + ', 0 ' + CAST(CAST(DATEDIFF(SECOND, '19700101', EndDate) AS BIGINT) AS VARCHAR(20)) + '''', 0)) PERSISTED ;
标签: sql-server sql-server-2008 spatial