Re: Begin Tran open disconnected recordset - reconnect - rollback/
- From: Jamie <Jamie@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 27 Feb 2008 04:10:00 -0800
Just to continue on this line of thought. There are actually two
co-dependent connections in the legacy application [which used DAO]. It tied
the two together using a Workspaces object that was ODBC bound to an ACCESS
database through table linking with many tables from the SQL Server 7.0
databases. The queries ran through this ODBC connection channel and the
rollback was only through the single ODBC channel.
While I can still follow the rule to open the connection and rollback
depending on the presence of the COM exception - I suspect that for this
case, what must happed is this - Establish a connection for each recordset,
maintain both, begin tran on both, and commit or rollback depending on
whether one or each of them has a COM exception.
Is this correct?
"Jamie" wrote:
.
I thought the key was the connection. Good to see it in print before
upgrading a critical legacy app.
Thanks Stephen.
"Stephen Howe" wrote:
Is is possible to commit or rollback under the following circumstances
using
ADO?
Must be. We do it here.
1. Begin a Tran on a database
2. Open a recordset and disconnect it
3. Perform multiple operations on the disconnected recordset
4. Reconnect and updatebatch on the recordset with adMarshallAll (default)
Yes but at this stage here, a transaction is associated with a particular
ADO Connection (I am assuming that you are using ADO's transactions)
Therefore in step 2, the Recordset may be disconnected, but I assume you
have kept the Connection alive that the Transaction in step 1 is associated
with.
And if you kept that Connection alive then your "reconnect" amounts to
reintroducing your Recordset to the same live Connection.
5. Filter (ModifiedRS.Filter = adFilterConflictingRecords)
6. When ModifiedRS.recordcount>0
6a ROLLBACK initial Tran from step 1.
7. Whne ModifiedRS.recordcount=0
7a COMMIT initial Tran from step 2.
But steps 5, 6, 7 are not necessary.
If a COM Exception is thrown => do a Rollback
If a COM Exception is not thrown => do a Commit
Given above sequence, if Rollback or Commit is completed
A) Will TRANSACTION effect the updatebatch condition given that the record
was opened after the Begin Tran?
You mean the other way round.
There is a pending transaction when UpdateBatch is called => whatever
happens in UpdateBatch in terms of INSERTs/UPDATEs/DELETEs will be in the
transaction
B) Will the fact that the recordset is disconnected mean that the
commit/rollback tran will not effect the records from that batch?
Neither. It depends entirely on whether yo uare using the same Connection
object that has the transaction or not.
If it is the same object => Recordset is covered in the Transaction
If it is a different object => Recordset is not covered in the Transaction
Stephen Howe
- Follow-Ups:
- Re: Begin Tran open disconnected recordset - reconnect - rollback/
- From: Stephen Howe
- Re: Begin Tran open disconnected recordset - reconnect - rollback/
- References:
- Prev by Date: Re: ADO/C++/EXCEL
- Next by Date: Re: Begin Tran open disconnected recordset - reconnect - rollback/
- Previous by thread: Re: Begin Tran open disconnected recordset - reconnect - rollback/
- Next by thread: Re: Begin Tran open disconnected recordset - reconnect - rollback/
- Index(es):
Relevant Pages
|
|