Forum
Merhaba,
Asp.NET + MSSql -> Yönetim paneli olan bir site geliştirmekteyim.Hosting olarak natro ile çalışıyoruz.Kimi zaman veritabanına bağlanırken kimi zaman ise açık bağlantı ile ilgili hata vermekte.
Aldığım hatalar aşağıdaki gibidir.
Veritabanına bağlanırken aldığım hata:
Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
Veri çekerken aldığım hata
executereader requires an open and available connection. the connection's current state is closed
Örnek Örnek Kod:
public static string KategoriAdiGetir(string AltKatID)
{
DB DB = new DB();
DB.DB_Baglan();
string KategoriAdi = "";
try
{
string Sql = "select AltKatID,AlKatAdi from tbl_urun_alt_kategori where AltKatID=" + AltKatID+" ";
SqlCommand cmd = new SqlCommand(Sql,DB.conn);
SqlDataReader dr = cmd.ExecuteReader();
dr.Read();
if (dr.HasRows)
{
KategoriAdi=dr["AlKatAdi"].ToString().Trim();
}
dr.Close();
}
catch (Exception ex)
{
Messagebox.show("Kategori Adı Getirilirken Hata Oluştu." + ex.Message);
}
DB.DB_Kapat();
return KategoriAdi;
}
---------------------------------------------------------------------
Bu şekilde açılan bağlantıları aslında DB.kapat(); ile kapatıyorum aslında.Aynı şekilde datareader nesnesini de close() metodu ile kapatıyorum.Bunların dışında yapılması gereken herhangi bir şey var mıdır ? Örneğin Dispose gibi.Yada başka bir teknik mi kullanmalıyım örneğin bağlantı açık kalmış mı gibi ?
Siteyi localde çalıştırırken hata alıyor musunuz?
Kişisel bir olay
Localde çalışırken hata almıyorum.Paylaşımlı hosting kullanıyoruz.Buna ek olarak da bir tane daha mssql veritabanı aldık.Verdikleri cevapta sorguların neden olduğu yönünde ancak bunu anlamanın yolu hangi sorgunun ne kadar süede cevap verdiği değil midir ? Bu bilgiyi paylaşmadılar.
Bunun yanında bağlantıların açık olduğu gibi bir cevap verdiler ancak ben gerek veritabanındaki bağlantıyı gerekse açık olan datareaderları kapatıyorum.
İyi günler Halil bey,
Genelde paylaşımlı hostinglerde bu tür sorunlar olabiliyor malesef. Çünki her host için bir sınırlama getiriliyor. Sorununuz da bundan kaynaklı olabilir. Bunu çözmenin en güzel yolu eğer iyi bir proje ise ve bütçeniz de varsa Windows bir VPS (Sanal Sunucu) kiralayıp işlemlerinizi daha rahat yapabilirsiniz. Ödemeler genelde aylık olduğu için hem sorununuz tekrar nüksetmesi durumunda kapatma imkanınız da var.
Ücretsiz de denemek isterseniz Digital ocean üzerinden bir droplet açarak da deneyebilirsiniz.
Ücretsiz droplet açabilmek için:
https://www.zulfumehmet.com/ucretsiz-sanal-sunucu-vps/ makaleyi inceleyebilirsiniz.
Windows kurmak için de:
https://www.zulfumehmet.com/digitaloceana-windows-kurulumu/
Makalelerini incelemenizi tavsiye edrim.
Kolay gelsin.
Kişisel bir olay
Öncelikle verdiğiniz cevap için teşekkür ederim.VPS sunucu aslında seçenekler arasında ve uzun vadede geçmeyi düşünüyoruz ancak ilk etapta hataya neyin sebep olduğunu bulmam gerekiyor.
MsSQL ve ASP.Net uzmanı olan arkadaşlar yardımcı olacaklardır bu konuda. Veritabanınızda çok veri var mı?
Kişisel bir olay
Veritabanı boyutu şu an 6MB civarında.
merhaba bu tur hostıngler shared db ve SQL express kullanırlar. Bazen tımeout alabılırsınız. Kodda bır sıkıntı goremedım db kapama ıslemlerı de dogru gozukuyor. şu makalede bulunan timeout özelliği ile connection time out süresi arttırılabilir fakat bu yönetimsel olarak sizin hostinginizde mevcut ve yetki dahilindemidir sormanız gerekiyor
saygılarımla
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com
Verdiğiniz cevap için teşekkür ederim.Dün gün boyu test ettim.Herhangi bir sorun çıkarmadı.Sanırım üzerinde durduğumuz konu ile alakalı (paylaşımlı hosting) yoğunluk olduğu zaman sorgulara geç yanıt veriyor.Mssql manager dan bağlantığımda 444 tane veritabanı saydım.Tek bir sunucu üzerinde mi konumlandırmışlar bilmiyorum.
Doğrudur tek sunucuda barındırıyorlar. Natronun bir güzel yanı şu, Windows sunucularda sadece ASP çalıştırıyor, Php çalıştırmak içinde Linux sunucu temin ediyordu galiba. Bir senedir kullanmıyorum, hala aynı durumda mı bilmiyorum.
Kişisel bir olay