10

我正在尝试在 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 表 'Test' 中的计算列 'BufferedGeometry' 无法持久化,因为列类型 'geometry' 是非字节排序的 CLR 类型。

我搜索了 BOL 和网络,但似乎无法找到解决问题的方法。我真的希望它能够被持久化,这样我就可以有效地索引它。我可以在代码中设置它,但是我可能会出现不一致的数据,因为我在某个时间点需要这两个值。

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

更新:Microsoft 在 SQL Server 2012 中添加了此功能。

4

2 回答 2

4

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

于 2008-10-23T22:18:13.673 回答
1

谁仍然有这样的问题:SQL Server 2012 现在允许它

于 2013-07-24T12:12:44.890 回答