ORM and Workflow Engine

Thread is closed for posting
2 posts, 0 answers
  1. Mario
    Mario avatar
    1 posts
    Member since:
    Mar 2009

    Posted 07 Apr 2009 Link to this post

    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


  2. Thomas
    Admin
    Thomas avatar
    590 posts

    Posted 07 Apr 2009 Link to this post

    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.
Back to Top