Quick answer: you have two options for solving this problem:
- Correct the stored procedure so that it works correctly in parallel situations.
- Place the SQL Query Recipient Processor in the BizTalk Cluster Node.
The following is an explanation of what is happening, and below that I give implementation details to fix the problem:
Description
, BizTalk ( , , , , ).
.
- , . , , .
, , - , - SQL . BizTalk , SQL, .
, , , , .
, - :
Select * From Record
Where Status = 'Unread'
Update Record
Set Status = 'Read'
Where Status = 'Unread'
, select .
, :
Update Record
Set UpdateId = @@SPID, Status = 'Reading'
Where Status = 'Unread'
Select * From Record
Where UpdateId = @@SPID
And Status = 'Reading'
Update Record
Set Status = 'Read'
Where UpdateId = @@SPID
And Status = 'Reading'
@@SPID , , newid()
BizTalk , . Kent Weare.
, , , .
SQL- , , .
BizTalk , , , . SQL, .