Principā gadījumi, kad dialogi netiek pārtraukti pareizi ir tikai divi:
- Testējot (izstrādes laikā).
- Manuāli apstrādājot kādu rindas elementu (kas būtu jādara avārijas gadījumā)
End Conversation @conversation_handle With Cleanupconversation_handle var iegūt no skata sys.conversation_endpoints (vairāk rakstā Service Broker: rindu monitorings).
Redzot produkcijas kodā "With Cleanup" ir nopietns pamats domāt, ka SB servisi nav korekti izveidoti.
Bet testēšanas nolūkos tomēr tas ir ļoti noderīgi. Un visu dialogu piespiedu beigšanai datu bāzē var izmantot šo vaicājumu:
declare @x uniqueidentifier
declare cur cursor for
Select conversation_handle From sys.conversation_endpoints
open cur
fetch next from cur into @x
while @@fetch_status = 0
begin
End Conversation @x With Cleanup
fetch next from cur into @x
end
close cur;
Deallocate cur;
Nav komentāru:
Ierakstīt komentāru