如何持久计算GEOMETRY或GEOGRAPHY列

Cra*_*son 10 sql-server spatial sql-server-2008

我正在尝试在SQL Server 2008下创建一个包含GEOMETRY列及其计算变量的表.

考虑下表,计算列返回缓冲几何:

CREATE TABLE [dbo].[Test] (
    [Geometry]      GEOMETRY    NOT NULL,
    [Buffer]        FLOAT       NOT NULL,
    [BufferedGeometry] AS ([Geometry].STBuffer([Buffer])) PERSISTED
);
Run Code Online (Sandbox Code Playgroud)

这个问题是导致以下错误:

消息4994,级别16,状态1,行2表'Test'中的计算列'BufferedGeometry'不能保留,因为列类型'geometry'是非字节顺序的CLR类型.

我有搜索BOL和网络,似乎无法找到我的问题的解决方案.我真的希望它能够持久化,以便我可以有效地对其进行索引.我可以在代码中设置它,但随后我有可能出现不一致的数据,因为我在某个时间点需要这两个值.

有人玩这个并知道解决方案或解决方法吗?

更新:Microsoft已在SQL Server 2012中添加此功能.

DJ.*_*DJ. 4

我想你可以使用触发器来计算它并将其存储到 [BufferedGeometry] 字段