ArcSDE 版本註冊的方法及問題解決

2021-09-19 19:19:28 字數 1650 閱讀 1117

在用arc engine開發業務系統時,可能會進行開發版本管理這樣的乙個功能,版本管理中就會涉及到要素集的版本註冊的需求。這時候問題就出現了,當sde被其他使用者連線時, 要註冊版本的要素集就會被其他使用者鎖定,這時候註冊版本就會提示該要素集已被其他使用者鎖定。所以在進行版本註冊的時候,需要將其他使用者斷開連線,但是自身的連線需要保留。斷開使用者連線的**如下:

private void disconnectusers(iworkspace wkspace)

puser = penmusers.next();}}

catch(exception ex)

}

注意:引數workspace必須是你的應用程式用的mxd所使用的工作空間物件例項,否則會被斷開連線,後續的檢視屬性表等操作將會報錯。獲取mxd的工作空間物件例項**如下:

ihookhelper phookhelper = new hookhelper();

phookhelper.hook = axmapcontrol.object;

ifeaturelayer pflayer =getfeaturelayerbylayername(phookhelper, "layername");

iworkspace _sdeworkspace = (pflayer.featureclass as idataset).workspace;

/// /// 根據圖層名稱獲取當前地**檔中的指定要素圖層

///

/// 鉤子物件

/// 圖層名稱

///

public ifeaturelayer getfeaturelayerbylayername(ihookhelper hookhelper, string layername)

";// ifeaturelayer

if (hookhelper.focusmap.layercount == 0)

ienumlayer players = hookhelper.focusmap.get_layers(pfluid, true);

ilayer player = players.next();

while (player != null)

player = players.next();

}return null;

}

"layername"引數是mxd裡的某乙個圖層的名稱。

接下來進行要素集的版本註冊:

var versionobj = _selectdataset as iversionedobject;

if (verobj != null && (!verobj.isregisteredasversioned))

else

完整的**如下:

private void button_register_click(object sender, eventargs e)

else}}

catch(exception ex)

}

以上就是乙個完整的arcsde版本註冊的方法,希望對您有所幫助!

解決ArcSDE版本編輯及刪除資料時出現的

lock request conflicts with an established lock 問題在sde 資料被鎖定的情況下,編輯 建立 featureclass 或者註冊版本的時候會報告 lockrequest conflicts with an established lock。方法一 多半...

ArcSDE服務啟動錯誤及解決方法

一 授權錯誤 現象 arcsde服務啟動又停止了。software authorization 無法完成註冊,仍然提示 no arcsde server license found。原因檢視 事件檢視器 應用程式 主要錯誤描述如下 error 327 no arcsde server license...

ArcSDE資料被鎖定後的解鎖方法

在sde資料被鎖定的情況下,編輯 建立feature class或者註冊版本的時候會報告 lock request conflicts with an established lock。多半情況下關閉資料庫連線可以解決這個問題,但有時候問題依然存在。解決的方法是 1.關閉所有的arcmap和arcc...