Warning: Can’t edit versioned workspace, check that you have proper permissions on the version.

July 20, 2011 1 Comment

This is the message we started seeing after an ArcMap crash today.

Warning: Can't edit versioned workspace, check that you have proper permissions on the version.

I’m sure there’s more than one trigger for it, but in our case, ArcMap did not release a table from ArcSDE load only mode. We verified this with the following SQL statement; it prints all the Oracle tables in load only mode:

-- Lists all Oracle tables that are in load only mode
SELECT a.owner OWNER,
  a.TABLE_NAME TABLE_NAME
FROM sde.table_registry a,
  sde.layers b
WHERE BITAND(b.eflags,1074790400)  = 1074790400
AND a.owner                        = b.owner
AND a.TABLE_NAME                   = b.TABLE_NAME;

Once you know which tables are in load only mode, use sdelayer on the command line to change them. You can also use sdelayer to get the current mode of a table (in lieu of the SQL above).

REM Describe the current mode for a featureclass/table
REM See http://help.arcgis.com/en/geodatabase/10.0/admin_cmds/support_files/datamgmt/sdelayer.htm
sdelayer -o describe -l {owner.featureclass,shape} -u myUserName  -p myPassword

REM Change the mode for a featureclass/table.
sdelayer -o {load_only_io | normal_io} -l owner.featureclass,shape -u myUserName -p myPassword

Good luck!

See also: http://support.esri.com/en/knowledgebase/techarticles/detail/35676

One Response to “Warning: Can’t edit versioned workspace, check that you have proper permissions on the version.”

  1. Drew Dowling says:

    Thank you this helped me a lot. In my case the sql query returned the name of the layer causeing the problem but when I checked it using sdelayer -o describe it said that layer was in normal mode. I tried changing to mode to load_only and then back to normal_io but it still didn’t work.

    Finally I exported the troubled feature class, deleted it in SDE and then reimported and was then able to edit it.

    I’m on a SQL Server DB so the modified SQL is below in case it helps anybody in the future.

    SELECT a.owner OWNER,
    a.TABLE_NAME TABLE_NAME
    FROM sde.SDE_table_registry a,
    sde.sde_layers b
    WHERE b.eflags & 1074790400 = 1074790400
    AND a.owner = b.owner
    AND a.TABLE_NAME = b.TABLE_NAME;

Leave a Reply