Tego wieczora zbierałem wiedzę, próbując przezwyciężyć 4 lata złych praktyk programistycznych z powodu firmy, dla której pracowałem. Jedną z rzeczy, które ostatnio natknąłem się na System.Transactions. Po przeczytaniu o nich przez ostatnie kilka godzin, myślę, że mam odpowiednie pojęcie o tym, jak działają i dlaczego chciałbyś z nich skorzystać. Jednak wszystkie przykłady, na które patrzyłem, pokazują, że wbudowany T-SQL jest wywoływany z poziomu transakcji.System miksowania. Transakcje z SqlTransactions
ja dość dużo stosowanie procedur przechowywanych wyłącznie podczas wykonywania dostępu do bazy danych, a wszystkie istniejące procedury przechowywane są owinięte w swoich SqlTransactions. Wiesz, używając "Rozpocznij tran", a następnie cofnij lub popełnij. Jeśli zapisany proces wywoła inny zapisany proces, to również tworzy transakcję, a komunikaty bańki się, aż zewnętrzna albo się wycofa, albo wycofa. Działa świetnie.
Tak więc moje pytanie brzmi, czy chciałem zacząć używać System.Transactions w moim kodzie - dla prostych celów monitorowania kolejnych zadań bazy danych, które nie mogą być zagnieżdżone w pojedynczej przechowywanej procedurze - jak to działa z istniejących SqlTransactions mam już w moich przechowywanych procs?
Czy użycie System.transactions w moim kodzie wystarczy dodać jeszcze jedną warstwę ochrony, zanim zostanie faktycznie zatwierdzona, lub dlatego, że jestem jawnie zobowiązująca się w moim SqlTransaction - czy dane będą utrwalane niezależnie od popełnienia lub wycofania w oparciu o kod transakcja?
Przyjęta odpowiedź na to pytanie jest błędna. Korzystanie z transakcji Sql w System.Transaction powoduje niezamierzone zachowanie (a mianowicie transakcja Sql NIE uczestniczy w zewnętrznej System.Transaction!) Wykonanie tego skutecznie neutralizuje transakcję. –
Dziękuję, że wykonałeś te poprawki, Bill. 7 lat później i nie pamiętam nawet, czy w końcu zaimplementowałem coś, co tego wymagało, ale dobrze jest mieć poprawną odpowiedź zaznaczoną. :) – WesleyJohnson