This is a migrated thread and some comments may be shown as answers.

ORM and Workflow Engine

1 Answer 215 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Mario
Top achievements
Rank 1
Mario asked on 07 Apr 2009, 08:15 AM
Hello,

Our product has a three-layer software architecture and we have servere problems concerning thread wide data access with OpenAccess ORM. In detail there are a Business-Layer, the GUI and additionally our software uses the Windows Workflow Foundation in some cases. In different activities within our workflows it is necessary to access the Business-Objects Layer and we get Exceptions like the following one which means that the active transation get lost and as a result there is no active transaction anymore.

It would be great if someone could help us.

Telerik.OpenAccess.RT.sql.SQLException: Please check, that the genericADO2 driver is not used with SQL Server 2000 as it does not support MARS; please use instead in the backendconfiguration element: backend="mssql" driver="ntds" ---> System.InvalidOperationException: SqlTransaction wurde beendet und kann nicht mehr verwendet werden. bei System.Data.SqlClient.SqlTransaction.ZombieCheck() bei System.Data.SqlClient.SqlTransaction.Commit() bei Telerik.OpenAccess.RT.Adonet2Generic.Impl.ConnectionImp.EndTxn(Boolean commit) bei Telerik.OpenAccess.RT.Adonet2Generic.Impl.ConnectionImp.commit() --- Ende der internen Ausnahmestapelüberwachung --- bei Telerik.OpenAccess.RT.Adonet2Generic.Impl.ConnectionImp.commit() bei OpenAccessRuntime.Relational.conn.LoggingConnection.commit() bei OpenAccessRuntime.Relational.conn.PooledConnection.commit() bei OpenAccessRuntime.Relational.RelationalStorageManager.finishRead(StatesReturned container, RelationalCompiledQuery cq, Object[] param, CachedQueryResult queryData, Int32 queryResultCount)
internalCounter = 1


1 Answer, 1 is accepted

Sort by
0
Thomas
Telerik team
answered on 07 Apr 2009, 03:14 PM
Hello Mario,

this looks to me as if either the transaction was committed/rolled back unconsciously or a timeout happened (more likely). OpenAccess will close long running transactions on the server side in order to
lessen the burden on the server, and this could be a symptom of such a timeout condition. Please make sure that you do not use possible blocking calls when iterating over a result set; everything where the user is involved is 'dangerous' as he might have gone for a coffee break while the transaction is in progress. In order to avoid such situations consider transferring the query result to a list before presenting the results to the user.
You can also set the 'Active connection timeout (secs)'  from the backend configuration dialog / Connection to a value greater than 120 seconds.

Regards,
Thomas
the Telerik team

Check out Telerik Trainer , the state of the art learning tool for Telerik products.
Tags
General Discussions
Asked by
Mario
Top achievements
Rank 1
Answers by
Thomas
Telerik team
Share this question
or