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

Sql server ArcGIS SQL Server ArcSDE:版本控制与标识列,sql-server,auto-increment,arcgis,identity-column,Sql Server,Auto Increment,Arcgis,Identity Column,[我不是在问GIS Stackexchange,而是在问,因为这可能更像是SQL Server的问题?] 我有一个SQL Server ArcSDE连接,通过一些脚本批量插入数据。目前,只要有一行新的数据,那么设置为INT和Identity列的'OBJECTID列就会增加1。到现在为止,一直都还不错。除了我需要在表上启用“版本控制” 因此,我遵循以下原则: 但是由于ArcGIS正在抱怨标识列,因此会出现错误,per:;当我删除列的Identity属性时,列值变为NULL——不好 那么,在我的场景

[我不是在问GIS Stackexchange,而是在问,因为这可能更像是SQL Server的问题?]

我有一个SQL Server ArcSDE连接,通过一些脚本批量插入数据。目前,只要有一行新的数据,那么设置为
INT
Identity
列的'
OBJECTID
列就会增加1。到现在为止,一直都还不错。除了我需要在表上启用“版本控制”

因此,我遵循以下原则:

但是由于ArcGIS正在抱怨标识列,因此会出现错误,per:;当我删除列的Identity属性时,列值变为NULL——不好

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

谢谢

更新1好的,因此将OBJECTID字段更改为具有默认GUID值的“uniqueidentifier”,现在我可以使用ArcGIS Desktop启用“版本控制”。但是,ArcGIS希望GUID是一种INT数据类型,因此无法使用?

鉴于我在上述问题中的“更新1”,我通过在批插入过程中为OBJECTID插入一个INT值来解决这一问题,具体如下所示:

因此,根据上述链接,我结束了以下工作:

INSERT INTO bo.TABLE (primary_key, field1, fiels2) VALUES ((SELECT ISNULL(MAX(id) + 1, 0) FROM bo.Table), value1, value2)
除非在我的情况下,标识在数据库中保持“打开”,或者,与上面的链接不同,我不必在批插入过程中打开/关闭标识;无论如何,这是有原因的