find number of open connection on database

前端 未结 3 1811
死守一世寂寞
死守一世寂寞 2021-01-04 22:50

My web application is in asp.net 2.0,c#2.0 and sql server 208 how can i find number of open connections on my sql server 2008 database.and is there any way to clear connecti

相关标签:
3条回答
  • 2021-01-04 23:12

    Sql query to get the current active connection

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

    you can define dbid if you want connection specific to database

    0 讨论(0)
  • 2021-01-04 23:23

    This shows the number of connections per each DB:

    SELECT 
        DB_NAME(dbid) as DBName, 
        COUNT(dbid) as NoOfConnections,
        loginame as LoginName
    FROM
        sys.sysprocesses
    WHERE 
        dbid > 0
    GROUP BY 
        dbid, loginame
    

    And this gives total connections:

    SELECT 
        COUNT(dbid) as TotalConnections
    FROM
        sys.sysprocesses
    WHERE 
        dbid > 0
    

    From c#, you can follow :
    http://www.c-sharpcorner.com/UploadFile/dsdaf/ConnPooling07262006093645AM/ConnPooling.aspx Another good reference can be found at :
    http://www.wduffy.co.uk/blog/monitoring-database-connections/

    Call the static method ReleaseObjectPool on the the OleDbConnection - see http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbconnection.releaseobjectpool.aspx

    0 讨论(0)
  • 2021-01-04 23:23

    You might want to read up on connection pooling: http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

    A separate connection pool is created for each distinct connect string. Further, if you are connecting via integraged security and your web site is using Basic or Windows authentication (rather than anonymous), a separate connection pool will be created for each user of the web site.

    To clear connection pools, the SqlConnection object provides the methods ClearPool() and ClearAllPool()`. However, an individual connection won't be closed and removed from the pool until it is closed or disposed.

    All the various objects involved in the execution of the sql query that implement IDisposable should be wrapped in a using statement to guaranteed proper disposal. Something along these lines:

    IEnumerable<BusinessObject> list = new List<BusinessObject>() ;
    
    using ( SqlConnection  connection = new SqlConnection( credentials ) )
    using ( SqlCommand     command    = connection.CreateCommand() )
    using ( SqlDataAdapter adapter    = new SqlDataAdapter( command ) )
    using ( DataSet        results    = new DataSet() )
    {
    
      command.CommandType = CommandType.StoredProcedure ;
      command.CommandText = @"someStoredProcedure" ;
    
      try
      {
        connection.Open() ;
        adapter.Fill( results ) ;
        connection.Close() ;
    
        list = TransformResults( results ) ;
    
      }
      catch
      {
        command.Cancel() ;
        throw
      }
    
    }
    
    return list ;
    

    You can examine what SPIDs are open in Sql Server either by executing the stored procedure sp_who (must have the appropriate admin permissions in the SQL Server). You can also use perfmon.

    0 讨论(0)
提交回复
热议问题