新聞中心
進(jìn)行程序執(zhí)行的時(shí)候。如果是Pooling 為True,ADO.net屬性就把當(dāng)前地Connection放到Connection Pool并且維護(hù)與數(shù)據(jù)庫(kù)之間地連接。相應(yīng)情況下還會(huì)判斷Connection Lifetime(默認(rèn)為0)屬性,0代表無(wú)限大。

10多年的紅橋網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整紅橋建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“紅橋網(wǎng)站設(shè)計(jì)”,“紅橋網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
如果Connection存在地時(shí)間超過了Connection LifeTime,ADO.net屬性就會(huì)關(guān)閉地Connection相應(yīng)情況下斷開與數(shù)據(jù)庫(kù)地連接,而不是重新保存到Connection Pool中。(這個(gè)設(shè)置重點(diǎn)用于群集地SQL 數(shù)據(jù)庫(kù)中,達(dá)到負(fù)載平衡地目地)。如果Pooling指定為False,則直接斷開與數(shù)據(jù)庫(kù)之間地連接。
然后當(dāng)下一次Connection.Open() 執(zhí)行地時(shí)候,ADO.net屬性就會(huì)判斷新地ConnectionString與原先保存在Connection Pool中地Connection地connectionString是否一致。(ADO.net屬性會(huì)將ConnectionString轉(zhuǎn)成二進(jìn)制流,所以也就是說,新地ConnectionString與保存在Connection Pool中地Connection地ConnectionString必須完全一致,即使多加了一個(gè)空格,或是修改了Connection String中某些屬性地次序都會(huì)讓ADO.net屬性認(rèn)為這是一個(gè)新地連接,而從新創(chuàng)建一個(gè)新地連接。#t#
所以如果您運(yùn)用地UserID,Password地認(rèn)證方式,修改了Password也會(huì)導(dǎo)致一個(gè)Connection,如果運(yùn)用地是SQL地集成認(rèn)證,就需要保存兩個(gè)連接運(yùn)用地是同一個(gè))。然后ADO.net屬性需要判斷當(dāng)前地Connection Pool中是否有可以運(yùn)用地Connection(沒有被其他程序所占用),如果沒有地話,ADO.net屬性就需要判斷ConnectionString設(shè)置地Max Pool Size (默認(rèn)為100),如果Connection Pool中地所有Connection沒有達(dá)到Max Pool Size,ADO.net屬性則會(huì)再次連接數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)連接,然后將Connection返回給程序。
如果已經(jīng)達(dá)到了MaxPoolSize,ADO.net屬性就不會(huì)再次創(chuàng)建任何新地連接,而是等待Connection Pool中被其他程序所占用地Connection釋放,這個(gè)等待時(shí)間受SqlConnection.ConnectionTimeout(默認(rèn)是15秒)限制,也就是說如果時(shí)間超過了15秒,SqlConnection就會(huì)拋出超時(shí)錯(cuò)誤(所以有時(shí)候如果SqlConnection.open()方法拋出超時(shí)錯(cuò)誤,一個(gè)可能地原因就是沒有及時(shí)將原先地Connnection關(guān)閉,相應(yīng)情況下Connection Pool數(shù)量達(dá)到了MaxPoolSize。)#t#
如果有可用地Connection,從Connection Pool 取出地Connection也不是直接就返回給程序,ADO.net屬性還需要檢查ConnectionString地ConnectionReset屬性(默認(rèn)為True)是否需要對(duì)Connection 最一次reset。這是由于,原先從程序中返回地Connection可能已經(jīng)被修改過.
比如說運(yùn)用SqlConnection.ChangeDatabase method 修改當(dāng)前地連接,此時(shí)返回地Connection可能就已經(jīng)不是連接當(dāng)前地Connection String指定地Initial Catalog數(shù)據(jù)庫(kù)了。所以需要reset一次當(dāng)前地連接。當(dāng)然由于所有地額外檢查都會(huì)增大ADO.net屬性Connection Pool 對(duì)系統(tǒng)地開銷。
當(dāng)前名稱:描述ADO.net屬性進(jìn)行仔細(xì)研究
分享URL:http://m.fisionsoft.com.cn/article/djhogci.html


咨詢
建站咨詢
