您好 :
您在之前有回覆小弟一個問題 , 您提到若每個 Connection 使用的 Account 都一樣的話 , MTS 會共用一個 Connection , 小弟現在用以下例子測試:
1.新增一個Active Dll Project1, 新增二個 ClassModule(設為MTS Object), class1 , class2 分別有一個 Connnection object , account 名稱一樣 ( conn.open "Provider = SQLOLEDB ; Data Source = 210.68.97.3 ; Initial Catalog = sal","sal_sa","sal")
2.製成 DLL , 並加入 MTS Package
3.另新增一執行檔, 引用Project1 , 新增二個物件 rs1,rs2 , 分別引用class1 , class2 執行程式後 , 觀察 MTS Windows 可看到 class1 class2 分別有一個啟動物件.
5.觀察 SQL Enterprise Windows 的 Process Info , 發覺有二個 spid 被建立 , 請問這樣是否為共用一個 Connection ? 如何觀察尚請不吝告知
謝謝
您在之前有回覆小弟一個問題 , 您提到若每個 Connection 使用的 Account 都一樣的話 , MTS 會共用一個 Connection , 小弟現在用以下例子測試:
1.新增一個Active Dll Project1, 新增二個 ClassModule(設為MTS Object), class1 , class2 分別有一個 Connnection object , account 名稱一樣 ( conn.open "Provider = SQLOLEDB ; Data Source = 210.68.97.3 ; Initial Catalog = sal","sal_sa","sal")
2.製成 DLL , 並加入 MTS Package
3.另新增一執行檔, 引用Project1 , 新增二個物件 rs1,rs2 , 分別引用class1 , class2 執行程式後 , 觀察 MTS Windows 可看到 class1 class2 分別有一個啟動物件.
5.觀察 SQL Enterprise Windows 的 Process Info , 發覺有二個 spid 被建立 , 請問這樣是否為共用一個 Connection ? 如何觀察尚請不吝告知
謝謝
文章標籤
全站熱搜

你無法去預測mts的connection數量,你的程式再多按幾次說不定就跑出了更多個connection,那是因為mts是管理connection和object的服務,它會自己去尋找可利用的connection,如果帳號密碼不一樣的話,它一定會新增connection,但如果一樣的話,就要看存在的connection是否空閒,照我們設計的程式來看,似乎使用完就該讓給下個物件來連,以下是我自己的解釋:因為使用connection的物件實際上還存在,所以還未釋放connection,既使你set nothing對mts也是無效的,所以connection的數量和物件就交給mts管就好了,聽說windows2000會有更好的效率.
沒錯 , 當我 Set conn = nothing 後 , 再去 SQL Enterprise 觀察 , Spid 仍然存在 , 我記得在 SQL 6.5 好像可以觀察到 Connection 的數量 , SQL7.0 就不知在那裡 ? 因為在 Current Activity 就只能看到 Process Info 和 Lock Object. 我想Process info 內應是所有的 Process 如 Select 指令 , 而且很奇怪當這個 RS set = nothing 時 , SPID 仍然存在. 很高興與您聊天 , 希望下次再有機會.
sql7.0在事件檢視器裡可以看到連線數量