分享一張SQLSERVER執行流程的圖片
有天論壇里有人問,一時間并發連接很多,是不是可以在SSMS里配置連接池
連接池是屬于客戶端的,配置只能在連接字符串里配置,修改你的連接字符串,SSMS沒有一個界面可以配置連接池的
可能系統中很多進程,每個進程都使用他們各自的連接池,這些連接池是進程之間不能共享的,也就是說每個進程的都有他們各自獨立的連接池,
如果A連接池的連接數是22767,那么B連接池就算你在連接字符串里設置max pool size=32767,也只能使用10000個連接
估計SniConnectionId就是標識每個進程的連接池ID的
大家可以看一下這篇文章,關于連接池的
從SQLSERVER2008開始使用Ring Buffer技術,當使用TCP協議進行連接時,可以獲得更多的相關信息-例如,本地IP地址,端口,以及遠程IP地址和端口,從而允許你唯一的確定客戶機及其應用。另外,Ring Buffer包括了一個時間戳以及與之相對應的SPID(如果有的話),這樣才能形成一個完整的對應關系。(因為隨著時間的推移SPID會被不同的連接所重用)。 我們同樣可以看到客戶發的TDS包中有多少bytes,并且可以知道是否在TDS中有任何的錯誤:
<TdsInputBufferError>0</TdsInputBufferError>
<TdsOutputBufferError>0</TdsOutputBufferError>
<TdsInputBufferBytes>60</TdsInputBufferBytes>
最相關的,最易于分析的信息記錄在TdsDisconnectFlags中,有一系列的值,記錄了關閉連接的狀態。這里,我們看到沒有發現錯誤,但是這里記錄了這也不是一個正常的斷開或者一個正常的登出。從如下的flag中,這個session是被殺死的:
<SessionIsKilled>1</SessionIsKilled>
上面ring buffer文章的鏈接:
利用Ring Buffer在SQL Server 2008中進行連接故障排除
還有關于SNI,看下面的SniConnectionId
1 <Record id="2" type="RING_BUFFER_CONNECTIVITY" time="110448275"> 2 <ConnectivityTraceRecord> 3 <RecordType>ConnectionClose</RecordType> 4 <RecordSource>Tds</RecordSource> 5 <Spid>55</Spid> 6 <SniConnectionId>B7882F3C-3BA9-45A7-8D23-3C5C05F9BDF9</SniConnectionId> 7 <SniProvider>4</SniProvider> 8 <RemoteHost><local machine></RemoteHost> 9 <RemotePort>0</RemotePort>
--------------------------------------------------------------------------------------
2013-9-16補充:
地址:http://kb.cnblogs.com/page/188200/
關于TDS協議:
如果有不對的地方,歡迎大家拍磚o(∩_∩)o
文章列表