2008-10-23 18 views
10

我試圖在SQL Server 2008下創建一個包含GEOMETRY列的表格及其計算的變體。如何持續計算的GEOMETRY或GEOGRAPHY列

考慮下表,將所計算列返回一個緩衝的幾何形狀:

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

的問題,這是它會導致以下錯誤:

Msg 4994, Level 16, State 1, Line 2 Computed column 'BufferedGeometry' in table 'Test' cannot be persisted because the column type, 'geometry', is a non-byte-ordered CLR type.

我有搜索BOL和網頁並且似乎無法找到解決我的問題的方法。我真的希望能夠堅持下去,這樣我就可以有效地編制索引。我可以在代碼中設置它,但是由於我在某個時間點需要兩個值,因此可能會出現不一致的數據。

任何人都打了這一點,並知道解決辦法或解決方法嗎?

更新:微軟已經添加在SQL Server中此功能將於2012年

+0

投票爲這個連接項:http://connect.microsoft.com/SQLServer/feedback/details/378126/how-to-persist-a-calculated-geometry-or-geography -column – 2011-04-07 01:03:00

回答

4

我想你可以使用觸發器來計算的話,並將其存儲到[BufferedGeometry]字段

+0

我個人不喜歡使用數據庫的觸發器,我沒有必要使用一個n流了很多年,我希望不會需要訴諸之一。 – 2008-10-24 15:56:31

1

誰仍然有這樣的問題:SQL Server 2012中現在允許它