Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

TransactionScope umesto SQL, OLEDB Transakcija

[es] :: .NET :: TransactionScope umesto SQL, OLEDB Transakcija

[ Pregleda: 2631 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.viser.edu.rs.



Profil

icon TransactionScope umesto SQL, OLEDB Transakcija23.05.2009. u 10:09 - pre 181 meseci
Pogledajte ovaj link
http://msdn.microsoft.com/en-us/library/ms172152(VS.80).aspx

Koliko sam shvaitio, TS radi nad bilo kakvim kodom, nevezano da li se radi sa bazama, i ako se desi greška, radi se automatski Rollback.
Da li je neko probao da koristi ovo umesto ADO.NET transakcija, jer mi se cini da je koriscenje TS jednostavnije,
posebno ako se radi sa tipiziranim DataSet-om.

Da li bih mogao da koristim nesto ovako:
Code:

using (TransactionScope scope = new TransactionScope())
{
         UserTableAdapter ta = new UserTableAdapter();
         DataSet1.UserDataTable dt = new DataSet1.UserDataTable();
         dt.AddUserRow(...);
         da.Update(dt);
         .... još neki add i update u neku drugu tabelu
         
         scope.Complete();
}



A vi,kako 'te?
 
Odgovor na temu

logic_rabbit
Radenko Zec
banjaluka

Član broj: 74458
Poruke: 271
*.lanaco.com.



+1 Profil

icon Re: TransactionScope umesto SQL, OLEDB Transakcija16.06.2009. u 12:32 - pre 180 meseci
Transaction scope se obicno koristi kada trebas da izvrsavas 2 ili vise upita sa 2 razlicita servera u transakciji.
Naravno sa aspekta performansi ti je vjerovatno bolje koristiti ado.net transakcije kad god mozes i samo u ovoj gore situaciji koristiti transaction scope.
logic_rabbit (MCAD,MCSD,MCT,MCTS-
Windows development,MCPD)
 
Odgovor na temu

Mikelly

Član broj: 16730
Poruke: 389
78.155.37.*



Profil

icon Re: TransactionScope umesto SQL, OLEDB Transakcija16.06.2009. u 14:11 - pre 180 meseci
Ja sam poceo koristiti transaction scope iz razloga sto table adapteri ne podrzavaju klasicne transakcije, i imao sam malo problema sa tim.

Da bi sve to radilo kako treba mora biti aktivan MSDTC (Microsoft Distributed Transaction Coordinator) servis. Ali je meni prijavljivao greske tipa "MSDTC on Server xxxxxx\SQLEXPRESS is unavailable" prilikom vise poziva serveru kroz transakciju.

Rjesenje koje sam nasao na net-u je da se u "Security Configuration" tab-u MSDTC-a podesi "No Authentication Required" (ili slicno) opcija, i tada radi kako treba (za sad).

Mozda ce nekome koristiti ovo.

Pozdrav.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: TransactionScope umesto SQL, OLEDB Transakcija16.06.2009. u 14:47 - pre 180 meseci
Pogledaj ovaj blog za sve opcije koje imas:

http://blah.winsmarts.com/2006...s--transactions-blog-post.aspx
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
91.148.84.*



+18 Profil

icon Re: TransactionScope umesto SQL, OLEDB Transakcija01.09.2009. u 12:55 - pre 178 meseci
Hteo bih da se nadovežem na ovu temu da ne bih otvarao novu...
Našao sam kod koji povezuje klijenta sa 2 servisa(oba rade update sql baze):
//servis
Code:
 
[OperationBehavior(TransactionScopeRequired = true)]
        public void UpdateData()
        {
            SqlConnection objConnection = new SqlConnection();
            objConnection.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\Administrator\My Documents\customerDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
            objConnection.Open();
            SqlCommand objCommand = new SqlCommand("INSERT INTO Customer(CustomerName,CustomerCode)" + "values('aaa','aaa')", objConnection);
            objCommand.ExecuteNonQuery();
            //throw new Exception("Forced error");
            objConnection.Close();
        }   


E sad kada klijent odradi ovo:

Code:

            using (TransactionScope ts = new TransactionScope())
            {
                try
                {
                    proxy1.UpdateData();//prvi update
                    //throw new Exception(" Forced error ");
                    proxy2.UpdateData();//drugi update
                    ts.Complete();
                    //tbStatus.Text = " Transaction commited ";
                }
                catch (Exception ex)
                {
                    tbStatus.Text = " Transaction aborted ";
                    ts.Dispose();
                }
                proxy1.Close();
                proxy2.Close();
            }


Upišu se vrednosti u tabelu, ali kada probam da forsiram grešku
upiše se vrednost "prvog update-a"
što ne bi smelo...
Interesuje me zašto se ne odradi rollback posle greške? I kako to da ispravim?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: TransactionScope umesto SQL, OLEDB Transakcija01.09.2009. u 13:38 - pre 178 meseci
TransactionScope radi samo sa objektima koji podrzavaju taj mehanizam. Zato ga ja ne volim bas narocito, vise volim ekspilicitnu kontrolu nego da nagadjam sta on moze a sta ne moze.

U tvom slucaju pretpostavljam da hoces da prosiris scope transakcije kroz WCF kanal sto bas nisam siguran da moze, bar ne na ovaj nacin kako si primenio.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: TransactionScope umesto SQL, OLEDB Transakcija01.09.2009. u 13:39 - pre 178 meseci
Procitaj ovaj clanak o transakcijama kroz WCF

http://msdn.microsoft.com/en-us/magazine/cc163432.aspx
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
*.148.89.0



+18 Profil

icon Re: TransactionScope umesto SQL, OLEDB Transakcija01.09.2009. u 13:49 - pre 178 meseci
Ok...hvala...probaću sa explicitnom kontrolom...
Mada baš u toj knjizi iz koje je članak piše da treba izbegavati explicitnu kontrolu :(

A i autor garantuje rollback,ali...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: TransactionScope umesto SQL, OLEDB Transakcija01.09.2009. u 14:15 - pre 178 meseci
Pa radi rollback kad se stvari postave na mesto. Problem nije u tome, problem je sto ti treba da gledas u pasulj dal je kod koji ti pises a kod kojeg inace radi loklana transakciona kontrola uopste podlozan distributed transakciji i na koji nacin i sta treba da uradis ekstra da bi to proradilo automatski, uz naravni nedostaatak bilo kakve povratne infomacije o tome da li je operacija ukljucena ili nije. Takvi runtime bugovi su najgori jer se otkrivaju veoma nezgodnim posledicama, narocito kad su pare i knjizenja u pitanju. A autoru knjige svaka cast.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
91.148.94.*



+18 Profil

icon Re: TransactionScope umesto SQL, OLEDB Transakcija03.09.2009. u 10:32 - pre 178 meseci
Miljane, naterao sam ga da radi i implicitno i explicitno...
Upravu si bolja varijanta je explicitno, jer u suprotnom sve mora biti extremno tacno podeseno...

Imam i jedno podpitanje...
Da li WCF koristi privatni workspace (pravi kopiju originalnih podataka pa radi na njima, pa u slucaju ne uspele transakcije odbacuje sve promene) ili korist write-ahead log (radi direktno na originalnim podacima, pravi log, i u slucaju ne uspele transakcije primenjuju se inverzne operacije iz log-a)?
Ja mislim da je ovo drugo....
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
91.148.81.*



+18 Profil

icon Re: TransactionScope umesto SQL, OLEDB Transakcija03.10.2009. u 21:04 - pre 177 meseci
Samo da potvrdim da je u pitanju writeahead log!!!
 
Odgovor na temu

[es] :: .NET :: TransactionScope umesto SQL, OLEDB Transakcija

[ Pregleda: 2631 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.