5

I cannot edit an ArcSDE database from multiple computers on a LAN network using a custom ArcGIS Engine application, I have tried both versioned and non-versioned feature classes, but they cannot be edited from more than one computer.

Inside the custom ArcGIS Engine application, for every single operation (Create, Remove), I open and close an edit session.

Any advice or experiences are welcome as why I may be unable to edit an ArcSDE database from multiple computers on a LAN network using a custom ArcGIS Engine application?

I tried to edit the same feature classe from 2 computers in the same time , but when i closed the edit session in the second computer, it gimme this error Your edits could not be saved because the target version has been updated since you started editing. These edits have been merged into your edit session. Review the changes and save again.

i'm editing feature classes like in this example :

    IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)DB_Access.get_obj().ws;
    workspaceEdit.StartEditing(true);
    workspaceEdit.StartEditOperation();

        IFeatureClass fc = DB_Access.get_obj().ws.OpenFeatureClass("points");

        IFeature f = fc.CreateFeature();

        f.set_Value(fc.Fields.FindField("name"), "name_of_point");

        f.Shape = geometry;
        f.Store();

        workspaceEdit.StopEditOperation();

        workspaceEdit.StopEditing(true);
10
  • 1
    it returned an error when you start editing from multiple machines ?
    – Mounaim
    Nov 13, 2013 at 11:11
  • it returns nothing but it cannot save the edits
    – geogeek
    Nov 13, 2013 at 15:37
  • 1
    Do all users have an Editor or Advanced license? Nov 13, 2013 at 20:50
  • yes they have all advanced licence
    – geogeek
    Nov 14, 2013 at 7:00
  • What edit operation are you performing, as in what interface and method are you using (ITable.Update, ITableWrite.DeleteRows)? How are you starting and stopping the edit session (IWorkspaceEdit, IMultiuserWorkspaceEdit)? What do you mean you cannot save the edits? Do you get an exception? Or are you checking something like IWorkspaceEdit.HasEdits?
    – travis
    Nov 15, 2013 at 20:07

2 Answers 2

4

This is a licensing issue. A standalone ArcEngine license does not support multi-user editing. According to ESRI's documentation, multi-user editing geodatabase functionality only exists for ArcGIS Server licensing.

Since you have tagged this question with ArcGIS Server, I am going to assume that you have an ArcGIS server license. What you need to do is ensure that both you and your users have the ArcGIS Geodatabase Update Extension installed. You need this to create a multi-user geodatabase and also to enable multi-user editing.

1. If you haven't yet verified that the geodatabase you are working with is actually a multi-user database, check this. If it isn't a MU Geodatabase follow this guide (essentially just create an empty multi-user geodatabase and import all your single-user geodatabase information into it).

2. Verify that all users have the necessary geodatabase update extension mentioned above installed on their computer.

3
  • i have already a multi user geodatabase with "geodatabase update extension", and arcgis server licence in server and client computers. i think that i should create a version for each user then reconcile all versions, i wish to find better manner than this.
    – geogeek
    Nov 19, 2013 at 7:29
  • 1
    You shouldn't have to do that - multi-user geodatabases should support multiple users editing a single feature class inherently. This leads me to believe that this is an ArcGIS Engine specific issue. Does multi-user feature class editing work fine outside of your custom ArcEngine application?
    – Conor
    Nov 19, 2013 at 23:15
  • yes i was missing the IMultiuserWorkspaceEdit, thanks a lot @Conor
    – geogeek
    Nov 20, 2013 at 9:43
3
+50

Have you tried using IMultiuserWorkspaceEdit.

IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)DB_Access.get_obj().ws;
IMultiuserWorkspaceEdit multiuserWSE = (IMultiuserWorkspaceEdit)workspaceEdit;
multiuserWSE.StartMultiuserEditing(esriMultiuserEditSessionMode.esriMESMVersioned);

workspaceEdit.StartEditOperation();

IFeatureClass fc = DB_Access.get_obj().ws.OpenFeatureClass("points");

IFeature f = fc.CreateFeature();

f.set_Value(fc.Fields.FindField("name"), "name_of_point");

f.Shape = geometry;
f.Store();

workspaceEdit.StopEditOperation();

workspaceEdit.StopEditing(true);
1
  • I'm glad it helped. You may want to look over this section of the doc. Editing through ArcObjects can be interesting.
    – travis
    Nov 20, 2013 at 10:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.