Click here to monitor SSC
SQLServerCentral is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
 
 
 
        
Home       Members    Calendar    Who's On


Add to briefcase

Need help on Linked server Transactions cauasing Optimistic concurrency and to avoid DTS failure Expand / Collapse
Author
Message
Posted Wednesday, March 2, 2011 5:25 AM
SSC Journeyman

SSC JourneymanSSC JourneymanSSC JourneymanSSC JourneymanSSC JourneymanSSC JourneymanSSC JourneymanSSC Journeyman

Group: General Forum Members
Last Login: Thursday, January 9, 2014 8:54 AM
Points: 88, Visits: 56
1. My DTS is failing often with the below err:
OLE DB provider 'MSDAORA' reported an error. [SQLSTATE 42000] (Error 7399) [SQLSTATE 01000] (Error 7312) [SQLSTATE 01000] (Error 7312) OLE DB error trace [OLE/DB Provider 'MSDAORA' IOpenRowset::OpenRowset returned 0x80004005: ]. [SQLSTATE 01000] (Error 7300). The step failed. 20110302 02:30:09 AM [WUPRDDB01A]


2. Executed as user: MYDB\MYLogon. Agent insert start [SQLSTATE 01000] (Message 0) School insert end [SQLSTATE 01000] (Message 0) School Update end [SQLSTATE 01000] (Message 0) School Status change end [SQLSTATE 01000] (Message 0) Notice order end [SQLSTATE 01000] (Message 0) OLD_STUDENTS deleted [SQLSTATE 01000] (Message 0) OLE DB provider 'MSDAORA' could not UPDATE table '[LNKSVRMY]..[CITY].[STUDENT]'. The rowset was using optimistic concurrency and the value of a column has been changed after the containing row was last fetched or resynchronized. [SQLSTATE 42000] (Error 7343) [SQLSTATE 01000] (Error 7312) OLE DB error trace [OLE/DB Provider 'MSDAORA' IRowsetChange::SetData returned 0x80040e38: The rowset was using optimistic concurrency and the value of a column has been changed after the containing row was last fetched or resynchronized.]. [SQLSTATE 01000] (Error 7300). The step failed.
20110301 04:48:01 PM [PRODUCTION01A]

I am using SQL Server 2000 and trying to Modify the data at Oracle 10G server. In production the STUDENT is being updated with multiple sources (apart from Sql 2000, it is being updated by some applications as well). We have kept all updates/inserts for that particular table under transactions.

I have simulated the scenario by opening two parellel transaction on the same table.
and found the error.

Session #1
SET XACT_ABORT ON
BEGIN DISTRIBUTED TRANSACTION
UPDATE LNKSVRMY..CITY.STUDENT
SET ACTIVE = 0 WHERE STD_ID = '57FH'

OutPut:
(1 row(s) affected)

Session #2
SET XACT_ABORT ON
BEGIN DISTRIBUTED TRANSACTION
UPDATE LNKSVRMY..CITY.STUDENT
SET ACTIVE = 0 WHERE STD_ID = '57FH'

OutPut: No result since other transaction is open


SEssion #1
Will execute the COMMIT

Session#2
i got the below concurrency problem

Server: Msg 7343, Level 16, State 4, Line 3
OLE DB provider 'MSDAORA' could not UPDATE table '[LNKSVRMY]..[CITY].[STUDENT]'. The rowset was using optimistic concurrency and the value of a column has been changed after the containing row was last fetched or resynchronized.
[OLE/DB provider returned message: Row cannot be located for updating. Some values may have been changed since it was last read.]
OLE DB error trace [OLE/DB Provider 'MSDAORA' IRowsetChange::SetData returned 0x80040e38: The rowset was using optimistic concurrency and the value of a column has been changed after the containing row was last fetched or resynchronized.].

On the other hand if the Session #1 run for long without transaction been commited i get the err:
Server: Msg 7399, Level 16, State 1, Line 3
OLE DB provider 'MSDAORA' reported an error.
[OLE/DB provider returned message: ORA-02049: timeout: distributed transaction waiting for lock
]
OLE DB error trace [OLE/DB Provider 'MSDAORA' IRowsetChange::SetData returned 0x80004005: ].


Plese let me know any of you faced/know this error and found the solution.

Post #1071842
« Prev Topic | Next Topic »

Add to briefcase

Permissions Expand / Collapse