RE: Blocked remote calls with COM+ and MSDTC
From: Piers Lawson (Piers_at_NOSPAM.com)
Date: 02/27/04
- Next message: Craig Buchanan: "Re: bitwise operation questions"
- Previous message: Scott Morris: "Re: function argument and odbc escape syntax"
- Messages sorted by: [ date ] [ thread ]
Date: Fri, 27 Feb 2004 05:41:06 -0800
As a follow up to this, we have found that the Remote Call is not a factor in the lock... well I mean the remote call is not actually a remote call! With the following code:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRANSACTION
SET REMOTE_PROC_TRANSACTIONS OFF
EXEC RemoteDatabase.DBName.dbo.RemoteStoredProc @pReturn OUT
ROLLBACK
The RemoteStoredProc is run in its own transaction which is not rolled back. However, with the following SQL:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN DISTRIBUTED TRANSACTION -- Simulates COM+ better
SET REMOTE_PROC_TRANSACTIONS OFF
EXEC RemoteDatabase.DBName.dbo.RemoteStoredProc @pReturn OUT
ROLLBACK
The RemoteStoredProc is enlisted in the distributed transaction regardless. So we may as well not have the remote call at all. Which means the problem is to do with the Client / COM+ / SQL Server interaction than the remote call.
Our problem appears to be that, with our long running transactions, the transaction that holds a lock on the Key table is occasionally being blocked from completeing its work. Whether this is because:
a) COM+ is not allowing the client to call back and execute a commit
b) The commit method is being executed in COM+ but it can't call into
the database
c) Something else completely
I have yet to establish!
Piers
- Next message: Craig Buchanan: "Re: bitwise operation questions"
- Previous message: Scott Morris: "Re: function argument and odbc escape syntax"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|