none
Ado.Net怎么获取数据库的连接池的当前连接数和连接状态。 RRS feed

  • 问题

  • Ado.Net怎么获取数据库的连接池的当前连接数和连接状态。现在有三台数据库服务器是用来读数据的,想通过连接数量来分配连接字符串,从不同的从库中读取数据。大家有遇到过相关问题吗?谢谢大牛赐教。
    2018年1月23日 6:55

全部回复

  • ADO.NET 根据连接字符串来分配连接池,第二次用相同的字符串连接时,在连接没有释放的情况下,会用第一次的连接。

    参考下面的代码例子

    https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-connection-pooling

    using (SqlConnection connection = new SqlConnection( "Integrated Security=SSPI;Initial Catalog=Northwind")) { connection.Open(); // Pool A is created. } using (SqlConnection connection = new SqlConnection( "Integrated Security=SSPI;Initial Catalog=pubs")) { connection.Open(); // Pool B is created because the connection strings differ. } using (SqlConnection connection = new SqlConnection( "Integrated Security=SSPI;Initial Catalog=Northwind")) { connection.Open(); // The connection string matches pool A. }

    下面的文章提供了查看连接池的方法

    ADO.NET Connection Pooling at a Glance

    https://www.codeproject.com/Articles/17768/ADO-NET-Connection-Pooling-at-a-Glance



    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2018年1月24日 0:31
  • Hi,

    欢迎在MSDN论坛发帖。

    据我所知每个connection 都是有自己的状态的,你可以通过下面的方法来判断。

    if (myConnection != null && myConnection.State == ConnectionState.Closed)
    {
       // do something
       // ...
    }

    对于当前的链接数量,你可以通过Performance counter 来获取。 其中有一个 NumberOfActiveConnections 属性,你可以参考一下,它就是记录当前的数量的。

    Best  Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年1月24日 7:07
    版主