其實我們一直在使用SqlServer的串連池。在連接字串中,Pooling為是否啟用串連池,預設值為true,表示啟用。
與串連池相關的兩個重要參數是 Min Pool Size和 Max Pool Size ,分別是池中的最小串連數和池中的最大串連數,預設值分別是0和100。
在我們建立一個串連的執行個體,並調用Open()方法時,串連池管理程式會在串連池中找到一個可用的串連;當調用Close()方法時,串連池管理程式又將串連返回到串連池中,以供下一次調用Open()方法時使用。
另外,連接字串中的 Connection Lifetime 為串連池中的串連設定了生命週期。它的預設值為0。當串連被返回到池時,將其建立時間與目前時間作比較,如果時間長度(以秒為單位)超出了由 Connection Lifetime 指定的值,該串連就會被銷毀。 這在聚集配置中很有用(用於強制執行運行中的伺服器和剛置於聯機狀態的伺服器之間的Server Load Balancer)。零(0)值將使串連池具有最大的連線逾時。
通過上面的瞭解,我們可以看出,即使是最簡單的連接字串,也在使用串連池。
----------------------------------------------------------------------------------------------
ps. 連接字串關鍵字的意義:
關鍵字 |
預設值 |
說明 |
Application Name |
不可用 |
應用程式的名稱,或者“.Net SqlClient Data Provider”(如果不提供應用程式名稱)。 |
Async |
'false' |
如果設定為 true,則啟用非同步作業支援。 可識別的值為 true、 false、 yes 和 no。 |
AttachDBFilename - 或 - extended properties - 或 - Initial File Name |
不可用 |
主要資料庫檔案的名稱,包括可串連資料庫的完整路徑名。只有具有 .mdf 副檔名的主要資料檔案才支援 AttachDBFilename。 如果主要資料檔案為唯讀,則附加操作將失敗。 該路經可以是絕對路徑,也可以是相對路徑,這取決於是否使用 DataDirectory 替換字串。如果使用 DataDirectory,則對應的資料庫檔案必須存在於替換字串指向的目錄的子目錄中。 說明遠程伺服器、HTTP 及 UNC 路徑名不受支援。必須按照如下方式使用關鍵字“database”(或其別名之一)指定資料庫名稱: "AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase" 如果資料檔案所在的目錄中存在記錄檔,並且在附加主要資料檔案時使用了“database”關鍵字,則會建置錯誤。這種情況下,請移除記錄檔。附加了資料庫後,系統將根據實體路徑自動產生一個新的記錄檔。 |
Connect Timeout - 或 - Connection Timeout |
15 |
在終止嘗試併產生錯誤之前,等待與伺服器的串連的時間長度(以秒為單位)。 |
Context Connection |
'false' |
如果應對 SQL Server 進行進程內串連,則為 true。 |
Current Language |
不可用 |
SQL Server 語言記錄名稱。 |
資料來源 - 或 - 伺服器 - 或 - 地址 - 或 - Addr - 或 - Network Address |
不可用 |
要串連的 SQL Server 執行個體的名稱或網路地址。可以在伺服器名稱之後指定連接埠號碼: server=tcp:servername, portnumber 指定本地執行個體時,始終使用 (local)。若要強制使用某個協議,請添加下列首碼之一: np:(local), tcp:(local), lpc:(local) 說明ADO.NET 2.0 不支援在 SQL Server 2000 或更低版本的共用記憶體上執行非同步命令。但是,可以強制用 TCP 代替共用記憶體,方法是:向連接字串中的伺服器名稱添加“tcp:”首碼,或者使用“本地主機”。 |
Encrypt |
'false' |
當該值為 true 時,如果伺服器端安裝了認證,則 SQL Server 將對所有在用戶端和伺服器之間傳送的資料使用 SSL 加密。 可識別的值為 true、 false、 yes 和 no。 |
Enlist |
'true' |
true 表明 SQL Server 串連池程式在建立線程的當前事務上下文中自動登記串連。 |
Failover Partner |
不可用 |
在其中設定資料庫鏡像的容錯移轉夥伴伺服器的名稱。 .NET Framework 1.0 或 1.1 版不支援 Failover Partner 關鍵字。 |
Initial Catalog - 或 - 資料庫 |
不可用 |
資料庫的名稱。 |
Integrated Security - 或 - Trusted_Connection |
'false' |
當為 false 時,將在串連中指定使用者識別碼 和密碼。 當為 true 時,將使用當前的 Windows 帳戶憑據進行身分識別驗證。 可識別的值為 true、 false、 yes、 no 以及與 true 等效的 sspi(強烈推薦)。 如果指定了使用者識別碼 和密碼,且整合式安全性設定為 true,則使用者識別碼 和密碼將被忽略,並使用整合式安全性。 |
MultipleActiveResultSets |
'false' |
如果為 true,則應用程式可以維護多活動結果集 (MARS)。 如果為 false,則應用程式必須在執行該串連上的任何其他批處理之前處理或取消一個批處理中的多個結果集。 可識別的值為 true 和 false。 .NET Framework 1.0 或 1.1 版不支援該關鍵字。 |
Network Library - 或 - Net |
'dbmssocn' |
用於建立與 SQL Server 執行個體的串連的網路程式庫。支援的值包括: dbnmpntw(具名管道) dbmsrpcn(多協議,Windows RPC) dbmsadsn (Apple Talk) dbmsgnet (VIA) dbmslpcn(共用記憶體) dbmsspxn (IPX/SPX) dbmssocn (TCP/IP) Dbmsvinn (Banyan Vines) 相應的網路 DLL 必須安裝在要串連的系統上。如果您不指定網路,且使用本機伺服器(例如“.”或 "(本地)"),使用共用記憶體。在此樣本中,網路程式庫為 Win32 Winsock TCP/IP (dbmssocn),使用的連接埠為 1433。 以帶有顏色區分的格式查看複製到剪貼簿列印Network Library=dbmssocn;Data Source=000.000.000.000,1433; Network Library=dbmssocn;Data Source=000.000.000.000,1433;
|
Packet Size |
8192 |
用來與 SQL Server 的執行個體進行通訊的網路資料包的大小,以位元組為單位。 |
Password - 或 - Pwd |
不可用 |
SQL Server 帳戶登入的密碼。建議不要使用。為保持高安全層級,我們強烈建議您使用 Integrated Security 或 Trusted_Connection 關鍵字。 |
Persist Security Info |
'false' |
當該值設定為 false 或 no(強烈推薦)時,如果串連是開啟的或者一直處於開啟狀態,那麼安全敏感資訊(如密碼)將不會作為串連的一部分返回。 重設連接字串將重設包括密碼在內的所有連接字串值。可識別的值為 true、 false、 yes 和 no。 |
計劃 |
不可用 |
指定串連計劃。如果以下項也在連接字串中指定,則將引發 ArgumentException:failover partner、AttachDbFileName、UserInstance=true 或 contextConnection=true。 |
複製 |
'false' |
如果使用串連來支援複製,則為 true。 |
Transaction Binding |
Implicit Unbind |
控制與登記的 System.Transactions 事務關聯的串連。 可能的值包括: Transaction Binding=Implicit Unbind; Transaction Binding=Explicit Unbind; Implicit Unbind 可使串連在事務結束時從事務中分離。分離後,串連上的其他請求將以自動認可模式執行。在事務處於活動狀態的情況下執行請求時,不會檢查 System.Transactions.Transaction.Current 屬性。 事務結束後,其他請求將以自動認可模式執行。 Explicit Unbind 可使串連保持串連到事務,直到串連關閉或調用顯式 SqlConnection.TransactionEnlist(null)。 如果 Transaction.Current 不是登記的事務或登記的事務未處於活動狀態,則引發 InvalidOperationException。 |
TrustServerCertificate |
'false' |
如果設定為 true,則使用 SSL 對通道進行加密,但不通過憑證鏈結對可信度進行驗證。 如果將 TrustServerCertificate 設定為 true 並將 Encrypt 設定為 false,則不對通道進行加密。 可識別的值為 true、 false、 yes 和 no。 有關更多資訊,請參見 連接字串文法 (ADO.NET)。 |
Type System Version |
不可用 |
指示應用程式期望的類型系統的字串值。可能的值包括: Type System Version=SQL Server 2000; Type System Version=SQL Server 2005; Type System Version=SQL Server 2008; Type System Version=Latest; 如果設定為 SQL Server 2000,將使用 SQL Server 2000 類型系統。 與 SQL Server 2005 執行個體串連時,執行下列轉換: XML to NTEXT UDT to VARBINARY VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 分別與 TEXT、NEXT 和 IMAGE。 如果設定為 SQL Server 2005,將使用 SQL Server 2005 類型系統。 對 ADO.NET 的目前的版本不進行任何轉換。 如果設定為 Latest,將使用此用戶端-伺服器對無法處理的最新版本。 這個最新版本將隨著用戶端和伺服器組件的升級自動更新。 |
使用者識別碼 |
不可用 |
SQL Server 登入帳戶。建議不要使用。為保持高安全層級,我們強烈建議您使用 Integrated Security 或 Trusted_Connection 關鍵字。 |
User Instance |
'false' |
一個值,用於指示是否將串連從預設的 SQL Server Express 執行個體重新導向到調用方帳戶下啟動並執行運行時啟動的執行個體。 |
Workstation ID |
本機電腦名稱 |
串連到 SQL Server 的工作站的名稱。 |
下表列出了 ConnectionString 內串連池值的有效名稱。 有關更多資訊,請參見 SQL Server 串連池 (ADO.NET)。
關鍵字 |
預設值 |
說明 |
Connection Lifetime |
0 |
當串連被返回到池時,將其建立時間與目前時間作比較,如果時間長度(以秒為單位)超出了由 Connection Lifetime 指定的值,該串連就會被銷毀。 這在聚集配置中很有用(用於強制執行運行中的伺服器和剛置於聯機狀態的伺服器之間的Server Load Balancer)。 零 (0) 值將使池串連具有最大的連線逾時。 |
Enlist |
'true' |
當該值為 true 時,池程式在建立線程的當前事務上下文中自動登記串連。 可識別的值為 true、 false、 yes 和 no。 |
Load Balance Timeout |
0 |
串連被銷毀前在串連池中生存的最短時間(以秒為單位)。 |
Max Pool Size |
100 |
池中允許的最大串連數。 |
Min Pool Size |
0 |
池中允許的最小串連數。 |
Pooling |
'true' |
當該值為 true 時,系統將從適當的池中提取 SQLConnection 對象,或在需要時建立該對象並將其添加到適當的池中。 可識別的值為 true、 false、 yes 和 no。 |
當設定需要布爾值的關鍵字或串連池值時,您可以使用“yes”代替“true”,用“no”代替“false”。整數值表示為字串。