IEditor.StartOperation throwing exception GDB_DataChanges

3160
4
02-08-2012 01:23 PM
GeoffMartin
New Contributor
Hi

We are getting the following exception in our code that we are converting from ArcGIS 9.1 to ArcGIS 10 when the code starts an operation eg pEditor.StartOperation.
{"The Microsoft Jet database engine cannot find the input table or query 'GDB_DataChanges'.  Make sure it exists and that its name is spelled correctly."} System.Exception {System.Runtime.InteropServices.COMException}

The code is written in .Net C# and runs in ArcGIS 10 Desktop SP3 on W2008 using ArcSDE 10 against MS SQL Server 2008 R2.

I dont know what the Jet Database engine has to do with ArcSDE editing (other than the scratchworkspace mdb that ArcGIS generates automatically while editing
in ArcGIS 10 held in the user local settings folder). The problem likely points to ArcGIS10 desktop & 9.3 database as indicated by this thread http://forums.arcgis.com/threads/18982-ArcMap-v10-Crashes-during-9.3-file-geodatabase-editing?highli... but we have a clean install on a new server.


Anyone seen this or have any ideas?


tks
Geoff
0 Kudos
4 Replies
AlexanderGray
Occasional Contributor III
I assume you upgrade the ArcSDE version from 9.x to 10 around the same time.  ArcSDE has two components, the software and the schema in the database.  Upgrading usually means installing the new software, then updating the schema. Did you run the update scripts for the database schema to match version 10?
0 Kudos
GeoffMartin
New Contributor
Alexander tks for replying - i sure did run the 'upgrade geodatabase'  command button to upgrade the schema and to all intents and purpose the schema looks like the ArcGIS 10 version. The sde.sde.sde_version table shows this:

[ATTACH=CONFIG]11853[/ATTACH]

tks
Geoff
0 Kudos
GeoffMartin
New Contributor
Resolved this someone else discovered if we explicitly code IEditor.StopOperation("blah) immediately before the IEditor.StartOperation() this fixed it.
According to the help ArcGIS 9.3 onwards you have to explicitly code StopOperation where prior to ArcGIS 9.3 you didnt have to.

I had this which didnt work:
IWorkspaceEdit2 _workspaceEdit = (IWorkspaceEdit2) pEditor.WorkspaceEdit;
if (_workspaceEdit.IsInEditOperation)
    pEditor.StopOperation("blah");

pEditor.StartOperation();

and replaced it with:
pEditor.StopOperation("blah);
pEditor.StartOperation();

and everything is sweet. Not sure if ive got all the syntax correct above as ive done it from memory.
Thanks
Geoff
0 Kudos
AlexanderGray
Occasional Contributor III
the only reason you would need this is if some other bit of code started an operation without stopping it.   Depending on what the code before is doing and how, this may not work in some circumstances.
0 Kudos