Sql Server 连接池及其用法
其實我們一直在使用SqlServer的連接池。在連接字符串中,Pooling為是否啟用連接池,默認值為true,表示啟用。
與連接池相關(guān)的兩個重要參數(shù)是 Min Pool Size和 Max Pool Size ,分別是池中的最小連接數(shù)和池中的最大連接數(shù),默認值分別是0和100。
在我們創(chuàng)建一個連接的實例,并調(diào)用Open()方法時,連接池管理程序會在連接池中找到一個可用的連接;當調(diào)用Close()方法時,連接池管理程序又將連接返回到連接池中,以供下一次調(diào)用Open()方法時使用。
另外,連接字符串中的 Connection Lifetime 為連接池中的連接設(shè)置了生命周期。它的默認值為0。當連接被返回到池時,將其創(chuàng)建時間與當前時間作比較,如果時間長度(以秒為單位)超出了由?Connection Lifetime?指定的值,該連接就會被銷毀。 這在聚集配置中很有用(用于強制執(zhí)行運行中的服務(wù)器和剛置于聯(lián)機狀態(tài)的服務(wù)器之間的負載平衡)。零(0)值將使連接池具有最大的連接超時。
?
通過上面的了解,我們可以看出,即使是最簡單的連接字符串,也在使用連接池。
----------------------------------------------------------------------------------------------
ps. 連接字符串關(guān)鍵字的意義:
| Application Name | 不可用 | 應(yīng)用程序的名稱,或者“.Net SqlClient Data Provider”(如果不提供應(yīng)用程序名稱)。 |
| Async | 'false' | 如果設(shè)置為?true,則啟用異步操作支持。 可識別的值為?true、?false、?yes?和?no。 |
| AttachDBFilename - 或 - extended properties - 或 - Initial File Name | 不可用 | 主數(shù)據(jù)庫文件的名稱,包括可連接數(shù)據(jù)庫的完整路徑名。只有具有 .mdf 擴展名的主數(shù)據(jù)文件才支持 AttachDBFilename。 如果主數(shù)據(jù)文件為只讀,則附加操作將失敗。 該路經(jīng)可以是絕對路徑,也可以是相對路徑,這取決于是否使用 DataDirectory 替換字符串。如果使用 DataDirectory,則對應(yīng)的數(shù)據(jù)庫文件必須存在于替換字符串指向的目錄的子目錄中。 說明 遠程服務(wù)器、HTTP 及 UNC 路徑名不受支持。必須按照如下方式使用關(guān)鍵字“database”(或其別名之一)指定數(shù)據(jù)庫名稱: "AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase" 如果數(shù)據(jù)文件所在的目錄中存在日志文件,并且在附加主數(shù)據(jù)文件時使用了“database”關(guān)鍵字,則會生成錯誤。這種情況下,請移除日志文件。附加了數(shù)據(jù)庫后,系統(tǒng)將根據(jù)物理路徑自動生成一個新的日志文件。 |
| Connect Timeout - 或 - Connection Timeout | 15 | 在終止嘗試并產(chǎn)生錯誤之前,等待與服務(wù)器的連接的時間長度(以秒為單位)。 |
| Context Connection | 'false' | 如果應(yīng)對 SQL Server 進行進程內(nèi)連接,則為?true。 |
| Current Language | 不可用 | SQL Server 語言記錄名稱。 |
| 數(shù)據(jù)源 - 或 - 服務(wù)器 - 或 - 地址 - 或 - Addr - 或 - Network Address | 不可用 | 要連接的 SQL Server 實例的名稱或網(wǎng)絡(luò)地址。可以在服務(wù)器名稱之后指定端口號: server=tcp:servername, portnumber 指定本地實例時,始終使用 (local)。若要強制使用某個協(xié)議,請?zhí)砑酉铝星熬Y之一: np:(local), tcp:(local), lpc:(local) 說明 ADO.NET 2.0 不支持在 SQL Server 2000 或更低版本的共享內(nèi)存上執(zhí)行異步命令。但是,可以強制用 TCP 代替共享內(nèi)存,方法是:向連接字符串中的服務(wù)器名稱添加“tcp:”前綴,或者使用“本地主機”。 |
| Encrypt | 'false' | 當該值為?true?時,如果服務(wù)器端安裝了證書,則 SQL Server 將對所有在客戶端和服務(wù)器之間傳送的數(shù)據(jù)使用 SSL 加密。 可識別的值為?true、?false、?yes?和?no。 |
| Enlist | 'true' | true?表明 SQL Server 連接池程序在創(chuàng)建線程的當前事務(wù)上下文中自動登記連接。 |
| Failover Partner | 不可用 | 在其中配置數(shù)據(jù)庫鏡像的故障轉(zhuǎn)移合作伙伴服務(wù)器的名稱。 .NET Framework 1.0 或 1.1 版不支持 Failover Partner 關(guān)鍵字。 |
| Initial Catalog - 或 - 數(shù)據(jù)庫 | 不可用 | 數(shù)據(jù)庫的名稱。 |
| Integrated Security - 或 - Trusted_Connection | 'false' | 當為?false?時,將在連接中指定用戶 ID 和密碼。 當為?true?時,將使用當前的 Windows 帳戶憑據(jù)進行身份驗證。 可識別的值為?true、?false、?yes、?no?以及與?true?等效的?sspi(強烈推薦)。 如果指定了用戶 ID 和密碼,且集成安全性設(shè)置為 true,則用戶 ID 和密碼將被忽略,并使用集成安全性。 |
| MultipleActiveResultSets | 'false' | 如果為?true,則應(yīng)用程序可以維護多活動結(jié)果集 (MARS)。 如果為?false,則應(yīng)用程序必須在執(zhí)行該連接上的任何其他批處理之前處理或取消一個批處理中的多個結(jié)果集。 可識別的值為?true?和?false。 .NET Framework 1.0 或 1.1 版不支持該關(guān)鍵字。 |
| Network Library - 或 - Net | 'dbmssocn' | 用于建立與 SQL Server 實例的連接的網(wǎng)絡(luò)庫。支持的值包括: dbnmpntw(命名管道) dbmsrpcn(多協(xié)議,Windows RPC) dbmsadsn (Apple Talk) dbmsgnet (VIA) dbmslpcn(共享內(nèi)存) dbmsspxn (IPX/SPX) dbmssocn (TCP/IP) Dbmsvinn (Banyan Vines) 相應(yīng)的網(wǎng)絡(luò) DLL 必須安裝在要連接的系統(tǒng)上。如果您不指定網(wǎng)絡(luò),且使用本地服務(wù)器(例如“.”或 "(本地)"),使用共享內(nèi)存。在此示例中,網(wǎng)絡(luò)庫為 Win32 Winsock TCP/IP (dbmssocn),使用的端口為 1433。 以帶有顏色區(qū)分的格式查看復(fù)制到剪貼板打印 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 的實例進行通信的網(wǎng)絡(luò)數(shù)據(jù)包的大小,以字節(jié)為單位。 |
| Password - 或 - Pwd | 不可用 | SQL Server 帳戶登錄的密碼。建議不要使用。為保持高安全級別,我們強烈建議您使用?Integrated Security?或Trusted_Connection?關(guān)鍵字。 |
| Persist Security Info | 'false' | 當該值設(shè)置為?false?或?no(強烈推薦)時,如果連接是打開的或者一直處于打開狀態(tài),那么安全敏感信息(如密碼)將不會作為連接的一部分返回。 重置連接字符串將重置包括密碼在內(nèi)的所有連接字符串值。可識別的值為?true、?false、?yes?和no。 |
| 計劃 | 不可用 | 指定連接計劃。如果以下項也在連接字符串中指定,則將引發(fā)?ArgumentException:failover partner、AttachDbFileName、UserInstance=true 或 contextConnection=true。 |
| 復(fù)制 | 'false' | 如果使用連接來支持復(fù)制,則為?true。 |
| Transaction Binding | Implicit Unbind | 控制與登記的?System.Transactions?事務(wù)關(guān)聯(lián)的連接。 可能的值包括: Transaction Binding=Implicit Unbind; Transaction Binding=Explicit Unbind; Implicit Unbind 可使連接在事務(wù)結(jié)束時從事務(wù)中分離。分離后,連接上的其他請求將以自動提交模式執(zhí)行。在事務(wù)處于活動狀態(tài)的情況下執(zhí)行請求時,不會檢查?System.Transactions.Transaction.Current?屬性。 事務(wù)結(jié)束后,其他請求將以自動提交模式執(zhí)行。 Explicit Unbind 可使連接保持連接到事務(wù),直到連接關(guān)閉或調(diào)用顯式?SqlConnection.TransactionEnlist(null)。 如果Transaction.Current?不是登記的事務(wù)或登記的事務(wù)未處于活動狀態(tài),則引發(fā)?InvalidOperationException。 |
| TrustServerCertificate | 'false' | 如果設(shè)置為?true,則使用 SSL 對通道進行加密,但不通過證書鏈對可信度進行驗證。 如果將 TrustServerCertificate 設(shè)置為?true?并將 Encrypt 設(shè)置為?false,則不對通道進行加密。 可識別的值為?true、?false、?yes?和?no。 有關(guān)更多信息,請參見?連接字符串語法 (ADO.NET)。 |
| Type System Version | 不可用 | 指示應(yīng)用程序期望的類型系統(tǒng)的字符串值。可能的值包括: Type System Version=SQL Server 2000; Type System Version=SQL Server 2005; Type System Version=SQL Server 2008; Type System Version=Latest; 如果設(shè)置為?SQL Server 2000,將使用 SQL Server 2000 類型系統(tǒng)。 與 SQL Server 2005 實例連接時,執(zhí)行下列轉(zhuǎn)換: XML to NTEXT UDT to VARBINARY VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 分別與 TEXT、NEXT 和 IMAGE。 如果設(shè)置為?SQL Server 2005,將使用 SQL Server 2005 類型系統(tǒng)。 對 ADO.NET 的當前版本不進行任何轉(zhuǎn)換。 如果設(shè)置為?Latest,將使用此客戶端-服務(wù)器對無法處理的最新版本。 這個最新版本將隨著客戶端和服務(wù)器組件的升級自動更新。 |
| 用戶 ID | 不可用 | SQL Server 登錄帳戶。建議不要使用。為保持高安全級別,我們強烈建議您使用?Integrated Security?或Trusted_Connection?關(guān)鍵字。 |
| User Instance | 'false' | 一個值,用于指示是否將連接從默認的 SQL Server Express 實例重定向到調(diào)用方帳戶下運行的運行時啟動的實例。 |
| Workstation ID | 本地計算機名稱 | 連接到 SQL Server 的工作站的名稱。 |
下表列出了?ConnectionString?內(nèi)連接池值的有效名稱。 有關(guān)更多信息,請參見?SQL Server 連接池 (ADO.NET)。
| Connection Lifetime | 0 | 當連接被返回到池時,將其創(chuàng)建時間與當前時間作比較,如果時間長度(以秒為單位)超出了由?Connection Lifetime?指定的值,該連接就會被銷毀。 這在聚集配置中很有用(用于強制執(zhí)行運行中的服務(wù)器和剛置于聯(lián)機狀態(tài)的服務(wù)器之間的負載平衡)。 零 (0) 值將使池連接具有最大的連接超時。 |
| Enlist | 'true' | 當該值為?true?時,池程序在創(chuàng)建線程的當前事務(wù)上下文中自動登記連接。 可識別的值為?true、?false、?yes?和?no。 |
| Load Balance Timeout | 0 | 連接被銷毀前在連接池中生存的最短時間(以秒為單位)。 |
| Max Pool Size | 100 | 池中允許的最大連接數(shù)。 |
| Min Pool Size | 0 | 池中允許的最小連接數(shù)。 |
| Pooling | 'true' | 當該值為?true?時,系統(tǒng)將從適當?shù)某刂刑崛?SQLConnection?對象,或在需要時創(chuàng)建該對象并將其添加到適當?shù)某刂小?可識別的值為?true、?false、?yes?和?no。 |
當設(shè)置需要布爾值的關(guān)鍵字或連接池值時,您可以使用“yes”代替“true”,用“no”代替“false”。整數(shù)值表示為字符串。
轉(zhuǎn)載于:https://www.cnblogs.com/blogofwu/p/4529873.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Sql Server 连接池及其用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 找规律 百度之星资格赛 1001 大搬家
- 下一篇: private static final