ArcGIS SQL Server ArcSDE:版本控制与标识列

时间:2015-07-09 15:07:21

标签: sql-server auto-increment arcgis identity-column

[我在这里要求代替GIS Stackexchange,因为这可能更像是一个SQL Server问题?]

我有SQL Server ArcSDE连接,其中通过一些脚本批量插入数据。目前,只要有新的数据行,就会有一个“OBJECTID”列,设置为INTIdentity列数增加1.到目前为止一直很好。除了我需要在桌面上启用“版本控制”。

所以我遵循这个:http://resources.arcgis.com/en/help/main/10.1/index.html#//003n000000v3000000

但因为ArcGIS抱怨Identity列而导致出错:http://support.esri.com/cn/knowledgebase/techarticles/detail/40329;当我将Identity属性删除到列时,列值变为NULL - 不好。

那么,在我的场景中,我怎么能将OBJECTID的值增加1个数作为自动增量?我想,我可以通过脚本在'OBJECTID'字段中插入一些GUID吗?另外,如果我遵循GUID路线,那么我不确定我是否能够偶尔通过ArcGIS Desktop手动添加行?

谢谢!

更新1 好的,所以将OBJECTID字段更改为具有默认GUID值的'uniqueidentifier',现在我可以使用ArcGIS Desktop启用“版本控制” 。但是,ArcGIS期望GUID成为INT数据类型 - 所以不要去?

1 个答案:

答案 0 :(得分:0)

根据我的更新1"在上面的问题中,我设法通过在批量插入期间为OBJECTID插入INT值来处理此问题:How to insert an auto_increment key into SQL Server table

所以按照上面的链接,我结束了:

INSERT INTO bo.TABLE (primary_key, field1, fiels2) VALUES ((SELECT ISNULL(MAX(id) + 1, 0) FROM bo.Table), value1, value2)

除了我的情况,IDENTITY仍然' ON'完全在数据库中,或者与上面的链接不同,我没有必要在批量插入期间设置身份开/关;无论如何,出于某些原因工作!