Lock conflict ..dead lock

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Lock conflict ..dead lock

Mesaj gönderen hakkus »

Merhabalar,
Firebird 1.5 kullanıyorum.
Server da belli kayıtları seçip update eden bir storedProcedure var.
Delphi tarafında
ibtransaction-->DefaultAction:=TaCommitRetaining.
Ayrıca IBStoredProcedure var server daki sprocedure 'ü execute ediyor.
Tek kullanıcıda sorun yok herşey çalışıyor.
Birden fazla kullanıcı bağlı olduğu zaman insert, delete, update işlemlerinde de sorun yok.
Ancak herhangi bir kullanıcı Server daki storedProcedure i çalıştırdığında hesaplamalar ve update ler yapıldıktan sonra diğer kullanıcılar herhangi bir record u update edemiyor. Aşağıdaki hata mesajı çıkıyor.
lock conflict on no wait transaction
dead lock
update conflicts with concurrent update
IbTrabsaction un seçenekleri değiştirerek denedim ama sorun çözülmedi.
saygılar
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

ben IBStoredprocedure componentini kullanmıyorum. TIBQuery i kullanıyorum ve execute işleminden sonrada commitretaing

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: Lock conflict ..dead lock

Mesaj gönderen sadettinpolat »

hakkus yazdı:IbTrabsaction un seçenekleri değiştirerek denedim ama sorun çözülmedi.

ibdatabase in izolasyon düzeyini değiştirmeyi dene. ibdatabase in stüne çift tıkla...
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

Merhabalar,
İlginize teşekkür ederim.
ben IBStoredprocedure componentini kullanmıyorum. TIBQuery i kullanıyorum ve execute işleminden sonrada commitretaing
TibQuery ile server daki storedProcedure ü nasıl execute edebilirim?
ibdatabase in izolasyon düzeyini değiştirmeyi dene. ibdatabase in stüne çift tıkla...

Çift tıklayınca standart ibdatabase özellikleri geliyor. İzolasyon seviyesi ile ilgili birşey göremedim..
saygılar
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Sql olarak
'EXECUTE PROCEDURE SeninProcedurun'
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

hakkus yazdı:
ibdatabase in izolasyon düzeyini değiştirmeyi dene. ibdatabase in stüne çift tıkla...
Çift tıklayınca standart ibdatabase özellikleri geliyor. İzolasyon seviyesi ile ilgili birşey göremedim..
pardon.
IbTransaction olacaktı. object inspectorden yaptığın ayarların dışında birde çift tıklayarak izolasyon düzeyini ayarlamayı dene. eğer bu seçeneği daha önce denemediysen tabi :(
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Kod: Tümünü seç

SELECT * FROM SP_STOK_LST(:_STR_ID)
Kullanımı

Kod: Tümünü seç

     QUE_Stok.Close;
     QUE_Stok.ParamByName('_STR_ID').Value := Null;
     QUE_Stok.Prepare;
     QUE_Stok.Open;
bu kullandığım şekil, parametre göndermiyeceksen sadece parametre kısımlarını kaldırman yeterli

kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

Merhabalar,
Arkadaşlar çok teşekkür ederim.
IbStoredProcedure yerine IBquery kullanınca sorun çözüldü.
Demekki ibStoredProcedure pek güvenli değil bu konularda.
saygılar
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Freeman demiş ki:
ben IBStoredprocedure componentini kullanmıyorum. TIBQuery i kullanıyorum ve execute işleminden sonrada commitretaing
Ben biryerde okumuştum ve şöyle diyordu; :roll:

- Eğer S.P. bir result set yani sonuç döndüren tipten ise Delphi tarafında TQuery içerinde kullanılır. Başka bir deyişle; S.P. sadece SELECT işlemi yapar.

- Eğer S.P. bir sonuç döndürmeden belli kayıtlar için UPDATE ve INSERT işlemi yapıyor ise Delphi tarafında TStoredProcedure içerinde kullanılır.

Freeman hocam demek istediğinizi tam olarak açıklayabilir misiniz? :)

Saygılar..
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

TIBStoredProcedure direk hatalıdır diyemem çünkü hiç incelemedim. Bende kullanayım dedim habire sorun çıkarttı bende IBQuery ye çevirdim.

TIBStoredProcedure de TIBQuery de IB nin API lerini kullanıyorlar IBQuery de yazdığınız SQL cümlesi gönderiliyor. TStoredProcedure de ise muhtemelen SQL i kendisi oluşturuyor seçilen Procedure adına ve parametrelere göre. Problem çıkartınca açıpta açıkçası kodu hiç incelemedim.

Bana sorulan soruya gelince, eğer yazılan SQL Result yani sonuç döndürmeyecekse delete insert vs gibi bunu Query.Execute ile çalıştırın deniyor. Eğer Sonuç dönecek ise Bu Query içine yazılacak StoredProcedure de olsa Open ile kullanın deniyor yanlış hatırlamıyorsamda marco amca diyordu bunu :) ama emin değilim.

Tabi eğer SP sonuç döndürmüyorsa Türk olduğumuzdan bir AliCengiz oyunu yapıp Sp den kendi belirlediğimiz bir sonuç döndürtebiliriz. mesela IB üzerinde Execption lar kullanmak ve delphi tarafında bunları yakalamak yerine bu değeri kullanılabilinir, böyle değişik varyasyonlar olabilir tabiki.
Ha tabi birde mutlaka belirtmekte fayda var bu konuda ben otorite değilim, ben yıllardır kullandığım yöntemleri ve edindiğim tecrübeleri yazıyorum. Konu yani forumdaki herhangi bir konu hakkında bilginiz varsa mutlaka belirtin benim bildiğim yöntem yanlış olabilir, yada başkasının. sadece nezaketi ve saygıyı unutmıyalım
Umarım açıklıyabilmişimdir

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Açıklamaların için sağolasın hocam.. :)

Kolay gelsin.
Cevapla