Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Transaction Başlatma ve Bitirme
#1
Herkese merhabalar  , 

sormak istediğim çok karmaşık bir kod yığını içinde transaction başlatıp ,  hata durumunda transactionların tamamını iptal etmem gerekiyor fakat bu karmaşık sorgu içinde sadece SQL sorguları yok bazı store procedureler de var. Transaction başlattığımda Sorgularda sorun olmuyor fakat store procedurler de otourum başlatıldığı için ilk çalışan sorgudan sonra oturum açık diye bir hata veriyor. Dolayısıyla işlem ortasında bir yerde kalıyor , hata da geri dönmediği için transaction iptal de edilemiyor. Böyle bir durumda transaction işlemlerini manuel olarak kontrol ettirmek ve işlemleri tek tek geri almak uzun süreceğinden bu şekilde bir işlem mantıklı mıdır ? Yoksa farklı bir yolu var mı acaba  ?

herkese şimdiden çok teşekkürler.
Cevapla
#2
Tüm işlemler parametrik bir SP içinde toplanabilirse kolay olur.

SP içinde CURSOR ile tablolarda kayıtlar arasında da dolaşılabilir.
Cevapla
#3
Fikrinizi paylaştıüğınız için teşekkür ediyorum.

SP dışında da bir çok SQL cümlesi ve sorgusu var çalışması gereken ayrıca tek bir SP içinde toplanması mümkün olmayan birbirinden bağımsız birkaç SP var işlem sırasında çalışması gereken SP ler diğer türlü işlem çok uzun sürebilir zamanın kısalması kontrollerin kolay olabilmesi için bazı SP ler ayrı çalışmalı.
Cevapla
#4
Her SP içerisinde neden ayrı ayrı transaction kullanıyorsunuz. Hata vermesi gayet normal. Genel bir tane transaction kullanırsanız içeride kullandığınız SP'de hataya düşersede rollback'e düşürmüş olursunuz. Bu işlemi SQL ile veya Unidac kullanıyorsanız transaction nesnesi ile yapabilirsiniz.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#5
Her SP içinde transaction kullanmıyorum birden çok SP var ve hepsini aynı SP içinde toplama mümkün değil , Transaction bir tane zaten sorun da ordan çıkıyor bu transaction aynı zamanda birçok SQL komutunu bir çok işlemi ve Sp yi kontrol ediyor. SQl komutlarında SQl kayıtlarında sorun yok ama transaction açıkken bir Sp çalıştığı anda içindeki SP nin içindeki ilk SQL cümlesinden sonra oturum açık hatası veriyor , halbuki transaction bitene kadar bir çok sp çalışmalı ama hepsi aynı anda çalışamaz. Arada başka kontroller de var bunu anlatmak istemiştim.
Cevapla
#6
Sorun tek bir yerde oluşuyorsa lokal bir sıkıntı olabilir. Belki derinlemesine incelemek lazım.

Bu arada farz edelim ki, transaction başlamışken işin ortasında 'istemci tarafında' elektrik kesilirse ne olur?

Yani oturum açık hatasından kurtulmak için belki de bağlantıyı kapatıp açmanı istiyordur.
Cevapla
#7
Anladığım kadarı ile, burada belirli bir sırada gitmeniz gerekiyor, birden çok SP tek bir Transaction a bağlı, siz önce SP leri sırayla gönderip işlemleri yaptıracaksınız, hiçbirinde problem yoksa en sonunda COMMIT edeceksiniz, herhangi birinde bir hata olursa, döngü kırılıp ROLLBACK yapacak.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#8
işlemi hızlandırmak için böyle birşey yapmıştım ama sanırım dediğiniz gibi sıralı olması belki sorunu çözebilir.
Herkese teşekkürler ediyorum ve kolaylıklar diliyorum.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Question unidac bileşenleri update transaction farklı transaction bağlama masteryoda 0 1.225 18-11-2016, Saat: 17:12
Son Yorum: masteryoda



Konuyu Okuyanlar: 1 Ziyaretçi