Selamun Aleyküm,
Hayırlı Pazarlar Üstadlar...
Delphi 10.2 ve ZEOS Component Set kullanıyorum.
Ağ üzerinde çalışan makinalarda ( kablosuz bağlantı ile ağa bağlanan ve özellikle modeme uzak olan makinalar ) ağ kopmalarında ZEOS tarafından ANA MAKİNA BAĞLANTI HATASI veriyor ve program kilitleniyor!!!
Sistem Programın kapatılmasına dahi izin vermiyor! Ancak Görev yöneticisinden programı kapatabiliyoruz...
Kapatmayı @serbek_tr viewtopic.php?f=18&t=23922 bu şekilde çözmüş
Benzer bir soru da viewtopic.php?f=2&t=32720 çözümsüz kalmış!
Sorun ile ilgili çözümönerileriniz nelerdir?
Firebird - ZEOS Connection - Anamakina Bağlantı hatası
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 330
- Kayıt: 09 Mar 2004 11:18
- Konum: Konya
- İletişim:
Re: Firebird - ZEOS Connection - Anamakina Bağlantı hatası
Merhaba,
Buradaki sorunun aslı bilgisayarın ağ iletişiminin kopması. Bu kopma normal bir kopma da değil anladığım kadarıyla. Arada gel-git yapıyor. Kısacası; ağ bağlantısı koptuğunu veya geldiğini uygulama içinden biliyor olmalısınız ki veritabanı ile ilgili soruna çözüm arayabilin.
Farklı bir şekilde ifade etmek gerekir ise;
- Ağ bağlantısı koptu.
- Uygulama bunu bilmiyor olmasına rağmen bağlantı kurmaya çalışır ise standartt TCP/IP gecikme süresi 2dk kadar donma yaşarsınız.
Dolayısıyla, sorunu anladığım kadarıyla ağ bağlantısı olmadığı durumda yeniden bağlantı yapılmaya çalışılmamalı. Ağ bağlantısı geri geldiğinde bağlantı yapılmalı.
Bu arada laptop, ve yeni nesil işletim sistemlerinde güç yönetimi ayarları ek soruna yol açıyor olabilir. Mesela ben desktop bilgisayarımda 3dk sonra uyku moduna geçiyor. Uygulamanın bu gibi durumları da algılaması ve oluştuğunda bağlantıyı kapatması, sistem geri geldiğinde yine yukarıdaki açıklandığı gibi ancak ağ bağlantısı sağlandıktan ve sunucu erişimi onaylandıktan sonra (uygulama bunu otomatik yapacak tabii) veritabanı bağlantısı sağlanmalıdır.
Böyle durumlarda ZAOS değil herhangi başka bir bileşen de size yardımcı olamayacaktır.
Buradaki sorunun aslı bilgisayarın ağ iletişiminin kopması. Bu kopma normal bir kopma da değil anladığım kadarıyla. Arada gel-git yapıyor. Kısacası; ağ bağlantısı koptuğunu veya geldiğini uygulama içinden biliyor olmalısınız ki veritabanı ile ilgili soruna çözüm arayabilin.
Farklı bir şekilde ifade etmek gerekir ise;
- Ağ bağlantısı koptu.
- Uygulama bunu bilmiyor olmasına rağmen bağlantı kurmaya çalışır ise standartt TCP/IP gecikme süresi 2dk kadar donma yaşarsınız.
Dolayısıyla, sorunu anladığım kadarıyla ağ bağlantısı olmadığı durumda yeniden bağlantı yapılmaya çalışılmamalı. Ağ bağlantısı geri geldiğinde bağlantı yapılmalı.
Bu arada laptop, ve yeni nesil işletim sistemlerinde güç yönetimi ayarları ek soruna yol açıyor olabilir. Mesela ben desktop bilgisayarımda 3dk sonra uyku moduna geçiyor. Uygulamanın bu gibi durumları da algılaması ve oluştuğunda bağlantıyı kapatması, sistem geri geldiğinde yine yukarıdaki açıklandığı gibi ancak ağ bağlantısı sağlandıktan ve sunucu erişimi onaylandıktan sonra (uygulama bunu otomatik yapacak tabii) veritabanı bağlantısı sağlanmalıdır.
Böyle durumlarda ZAOS değil herhangi başka bir bileşen de size yardımcı olamayacaktır.
-
- Üye
- Mesajlar: 330
- Kayıt: 09 Mar 2004 11:18
- Konum: Konya
- İletişim:
Re: Firebird - ZEOS Connection - Anamakina Bağlantı hatası
Detaylı bilgi için çok teşekkür ederim @ertank
Ancak deneme fırsatı bulabildiğim için geç cevap verdim...
AnaForma bir ApplicationEvents nesnesi koydum, OnException eventa
Kodunu yazdık...
ApplicationEvent Exception da 'SQL Error: Unable to complete network request to host' mesajını yakalarsa ShowMessage ile işlemi durduruyor ve Connection kapatıyor...
Kullanıcı Ağ Bağlantısını kontrol ettikten sonra Onay verirse Tekrar Bağlanmayı Deniyor!
Testlerde sorunsuz çalıştık, Şimdi Kullanıcılardan gelen sonuca bakacağız.
İyi çalışmalar dileriz.
Ancak deneme fırsatı bulabildiğim için geç cevap verdim...
AnaForma bir ApplicationEvents nesnesi koydum, OnException eventa
Kod: Tümünü seç
if POS('SQL Error: Unable to complete network request to host', e.Message ) > 0 then
begin
try
DM1.ConnSabit.Connected := False;
DM1.Conn1.Connected := False;
except
end;
if Mesaj( 'Ana Makina ile bağlantı kopmuştur! Ağ Bağlantınızı kontrol ediniz...'+#13+#13+'Anamakina bağlantısı tekrar denensin mi?', cMsgOnay ) = mrYes then
begin
try
DM1.ConnSabit.Connected := True;
DM1.Conn1.Connected := True;
Mesaj( 'Ana Makinası bağlantısı sağlanmıştır.', cMsgBilgi);
except
on e:Exception do
begin
LogEkleErr( e.Message );
Mesaj(sServerAlias + ' Makinası bağlantısı sağlanamadı! Programı tekrar çalıştırınız.'+#13+#13+'HATA : '+e.Message, cMsgHata);
Application.Terminate;
end;
end;
end
else
begin
Application.Terminate;
end;
end
else
begin
Mesaj( e.Message, cMsgHata );
LogEkleErr( e.Message );
end;
ApplicationEvent Exception da 'SQL Error: Unable to complete network request to host' mesajını yakalarsa ShowMessage ile işlemi durduruyor ve Connection kapatıyor...
Kullanıcı Ağ Bağlantısını kontrol ettikten sonra Onay verirse Tekrar Bağlanmayı Deniyor!
Testlerde sorunsuz çalıştık, Şimdi Kullanıcılardan gelen sonuca bakacağız.
İyi çalışmalar dileriz.