2011-07-20 11 views
7

, Net bağlantı dizesi varsayılan olarak aynıdır SqlConnection nesneleri havuzu olacak. Dispose yöntemini çağırırsam bağlantı hala havuzlanır mı?SqlConnection en bertaraf yöntemi Bağlantı Havuz müdahale olacak mı? Benim anlayış

Bu soru zaman zaman tek PageLoad olay veritabanına birçok hit yapan bir ASP.NET uygulaması bağlamında altında istenir. Ben bağlantı havuza olmak istiyorum ama Kapanış ve veri işlem bir kez bağlantı atılması bağlantı havuzunun .NET'in işleme müdahale etmeyecek tamamlandıktan onay istiyorum.

cevap

10

bir SqlConnection kapanış, bağlantı havuzu kullanan sadece onunla yapılır bağlantı havuzu söyler. Havuz, daha sonra bağlantının fiili olarak kapatılıp kapatılmayacağına veya tekrar kullanılıp kullanılmayacağına karar verecektir. MSDN docs itibaren

: SqlConnection kapsam dışına çıkarsa

, kapalı edilmeyecektir. Bu nedenle, Kapat veya At'ı çağırarak bağlantıyı açıkça kapatmanız gerekir. Kapat ve atın işlevsel olarak eşdeğerdir. Bağlantı havuzu değeri Havuzlama true değerine ayarlanırsa veya evet, alttaki bağlantı geri bağlantı havuzuna iade edilirse. Diğer taraftan, Havuzlama yanlış veya hayır olarak ayarlanmışsa, sunucuya temel bağlantı kapatılır.

3

SQL Server Connection Pooling MSDN belgelerine

Bağlantılar onlar kapalı veya

ve

önemle size tavsiye

bertaraf zaman havuza geri salınan diyor Bağlantıyı her zaman ise f bağlantıyı kullanarak bağlantıyı havuzuna geri döndürecektir. Sen de

... ya kapat ya bağlantı nesnesi yöntemlerini atın kullanarak bunu yapabilirsiniz, bu bağlantıların havuzundan düştü eğer belirleyecektir bağlantı pooler olan

o uzun süre boşta kaldıktan sonra bağlantı pooler havuzundan bir bağlantı kaldırır veya pooler algılarsa sunucuyla bağlantı kopmuş edildiğini

1
Benim anlayış

, .Net SqlConnection

Hayır, SQL sağlayıcısı (bağlantı dizesi göre ayrı havuzlu), SQL Server altında yatan bağlantıları havuz olacak nesneleri havuz olacak.

SqlConnection nesneleri toplanmış bağlantı kazanç (veya havuzu için yapılandırılmamış ne bir havuza alınan bağlantının mevcut olup olmadığını dayalı bir yenisini, vb oluşturma) Open çağrıldığında ve Close veya Dispose olduğunda bağlantıyı yayınlayacak olacak aradı.

İki kavram (SqlConnection nesnesi ve SQL Server'a gerçek bağlantıları) farklıdır, ancak açıkçası biraz ilişkilidir.

+0

ilk noktanızla ilgili olarak da düşündüğüm budur ama cevabımda işaret ettiğim MSDN dokümanı belirsiz görünüyor "Havuz oluşturulduğunda, çoklu bağlantı * nesneleri * oluşturuluyor ve havuza ekleniyor, böylece minimum havuz boyutu gereksinimi karşılanır "ve" SqlConnection nesnesi istendiğinde, kullanılabilir bir bağlantı varsa havuzdan alınır "?? Sanırım bu, bazı belgelerin önceki bölümlerinde çeliştiği için yanıltıcıdır .. –

+0

@cpedros - evet, yanıltıcı olduğunu söyleyebilirim - "bağlantı nesneleri" ni (nebulous underlying links) ve "SqlConnection nesneleri" - "SqlConnection" s yönetilen nesnelerdir ve her biri Max Pool = 100 ile tek bir bağlantı dizesini paylaşan 10000 tane oluşturabilirsiniz. Hepsini eşzamanlı olarak * açmaya çalıştığınızda başarısız olur. –

İlgili konular