SQL Server[原]获取SQL Server当前数据库即经常并接数问题的再论

落SQL Server当前数据库即经常并接数问题的再论

(博客转载请注明原文地址与作者)

 

 

第一是问题根源于以下就篇帖子。

 

链接:获取SQL Server的脚下连接数

 

旋即员博主将题目考虑的大周全了。大家提供的大半是泰的,在连续池中之连续数要未是不怕经常之用户之尝尝连接数目。

关于稳定连接数目:

绝大多数答都富有参考意义。但是于事实上的测试着,我挡了Background连接后还发现发生2交3之免稳定差值。寻找了一半天竟将测试数据与性能监视器中之多少对达标了,完全不例外一度用于企业服务器上了。

 

立长达获得稳定连接数之言语,它长这么:

 

select COUNT(spid)

 from master.dbo.sysprocesses

 where

 net_library=’TCP/IP’ and (loginame in (‘sa’,’NT AUTHORITY\SYSTEM’,”…”,”…”));

 

关于这的连数目:

但是监视这底连日sql的多少却照样没获得解决。如果有人知晓,请晓大家。

此地自己提供一个措施,但是不是sql语句,是C#的,方便拥有想解决这个题材之Ren:

 

极要的一样词是,获取性能计数器中之该项:

PerformanceCounter pCunter = new PerformanceCounter(“SQLServer:General Statistics”, “Connection Reset/sec”);

 

 

它来自性能监视器的此:

SQL Server 1

 

持有自的控制台代码如下:

 

using System;

using System.Diagnostics;

using System.Threading;

using System.Data;

using System.Data.SqlClient;

 

namespace TestSQLConnectionCounter

{

    class Program

    {

        static void Main(string[] args)

        {

            PerformanceCounter pCunter = new PerformanceCounter(“SQLServer:General Statistics”, “Connection Reset/sec”);

            Thread th = new Thread(o => {//获取sql即经常并接数数据的线程

                while (true)

                {

                Console.WriteLine(pCunter.NextValue().ToString());

                    Thread.Sleep(1000);

                }

            });

            //查数据库线程

            Thread thSQL = new Thread(o =>

            {

                while (true)

                {

                    Slct(“Data Source=.;Initial Catalog=DBName;Integrated Security=True”, “SQLString”);

                    Thread.Sleep(10);

                }

            });

            th.Start();

            thSQL.Start();

            Console.ReadLine();

        }

        /// <summary>

        /// 查数据库

        /// </summary>

        /// <param name=”conStr”></param>

        /// <param name=”sql”></param>

        static void Slct(string conStr,string sql)

        {

            using (SqlConnection conn = new SqlConnection(conStr))

            {

                using (SqlCommand cmd = new SqlCommand(sql,conn))

                {

                    conn.Open();

                    cmd.ExecuteNonQuery();

                }

            }

        }

    }

}

 

倘发生什么尴尬的地方,请大家“即经常”纠正。

 

 

 

 

相关文章