SQL Server 2000 - using ODBC to connect.
I have autocommit turned off and enabled implicit transaction support
The gist of it is that I have to maintain database transactions while waiting for a remote client to respond. This can take up to 30 seconds from initial connect to response. Actual interaction with the db takes about 650ms. I commit the tx on ACK, rollback if the client disconnects or NAKs.
This works great for a single client. There are a few table updates and inserts that occur with each client connection and they are all viewed as a single transaction to be committed or rolled back depending on if the client actually processes the response.
But when a second client connects, the first has a lock on the relevant tables and they end up in this weird tug of war and neither will give up. SQL Server doesn't break the lock and it appears from my reading that it's a particular situation that can occur with distibuted client/server deadlocks.
So, my dilemma is how to maintain the atomicity of the transaction over a 30 second timespan and still allow concurrent access to the db.
Suggestions? Thanks..
I have autocommit turned off and enabled implicit transaction support
The gist of it is that I have to maintain database transactions while waiting for a remote client to respond. This can take up to 30 seconds from initial connect to response. Actual interaction with the db takes about 650ms. I commit the tx on ACK, rollback if the client disconnects or NAKs.
This works great for a single client. There are a few table updates and inserts that occur with each client connection and they are all viewed as a single transaction to be committed or rolled back depending on if the client actually processes the response.
But when a second client connects, the first has a lock on the relevant tables and they end up in this weird tug of war and neither will give up. SQL Server doesn't break the lock and it appears from my reading that it's a particular situation that can occur with distibuted client/server deadlocks.
So, my dilemma is how to maintain the atomicity of the transaction over a 30 second timespan and still allow concurrent access to the db.
Suggestions? Thanks..