Есть ли способ подсчитать, сколько соединений используется из пула - PullRequest
1 голос
/ 30 марта 2012

Я хочу написать такую ​​вещь,

в моем модульном тесте я хочу знать, есть ли утечка соединения? Итак, я хочу получить количество использованных из соединений пула до, и получить после того, как оно будет равным, тесты STA, поэтому он должен работать

Итак, вопрос в заголовке этого

Ответы [ 2 ]

0 голосов
/ 24 января 2013

Вы должны иметь возможность сделать что-то вроде следующего примера консольного приложения:

    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, который дал мне правильный класс Win32.

0 голосов
/ 30 марта 2012

Не знаю, ищите ли вы это, но попробуйте.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...