2012-03-30 17 views
1

私はそのようなものを書こうとします。プールから何個の接続を使用するのかいくつかの方法がありますか

私のユニットテストでは接続リークがありますか? だから私はそれがとても

を働かなければならないので、前にプールconectionsから使用のカウントを取得し、それは同じでなければなりませんした後に取得するために、テストは、STAありたい、質問は私にはない、この

+1

演技がありますそれのためのnceカウンター、あなたはPerfmon.exeでそれを見ることができます。カテゴリ= ".NET CLRデータ"、カウンタ= "SqlClient:現在のプールされた接続数"。インスタンスはテストランナーになるはずです。 WMIまたはPerformanceCounterを使用して読み取ります。 –

答えて

0

のタイトルでありますこれがあなたが探しているものかどうかを知っているが、試してみてください。

SELECT COUNT(*) AS Number_Of_Connections FROM sys.dm_exec_sessions WHERE program_name='your connection str application name'

またはデータベース名に基づいてカウント

SELECT DB_NAME(dbid) as 'DbNAme', COUNT(dbid) as 'Connections' from master.dbo.sysprocesses with (nolock) WHERE dbid > 0 GROUP BY dbid

+0

この場合、OPは特定の.NET CLRカウンタを参照しています。 –

0

次のサンプルコンソールアプリケーションのような何かを行うことができるはず:

static void Main(string[] args) 
    { 
     using (SqlConnection conn = new SqlConnection(@"SAMPLE_CONNECTIONSTRING")) 
     { 
      conn.Open(); 
      using (SqlCommand cmd = new SqlCommand()) 
      { 
       cmd.Connection = conn; 
       cmd.CommandText = "SELECT * FROM SAMPLE_TABLE"; 
       SqlDataReader dr = cmd.ExecuteReader(); 

       //Used to show that values update based on connections in use. 
       //dr.Dispose(); 
       //cmd.Dispose(); 
       //conn.Dispose(); 

       //create our WMI searcher 
       ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PerfRawData_NETDataProviderforSqlServer_NETDataProviderforSqlServer"); 
       //now loop through all the item found with the query 
       foreach (ManagementObject obj in searcher.Get()) 
       { 
        try 
        { 
         Console.WriteLine("Class Win32_PerfRawData_NETDataProviderforSqlServer_NETDataProviderforSqlServer"); 
         Console.WriteLine(obj.Properties["Name"].Value); 

         Console.WriteLine("Connection Pools " + obj.Properties["NumberOfActiveConnectionPools"].Value); 
         Console.WriteLine("Pooled Connections " + obj.Properties["NumberOfPooledConnections"].Value); 
         Console.WriteLine("Active Connections " + obj.Properties["NumberOfActiveConnections"].Value); 
         Console.WriteLine("Free Connections " + obj.Properties["NumberOfFreeConnections"].Value); 
        } 
        catch (Exception ex) 
        { 
         //throw new Exception("Failed to enumerate a WMI command.", ex); 
        } 
       } 
      } 
     } 
     Console.ReadLine(); 
    } 

VB Code Sample that got me the correct Win32 class.

関連する問題