Diagnostic Queries

Monitoring


Monitoring
These queries helped us at several occasions when we exceeded default connection pool size of 100.
We also used these queries identify uneven load across servers and dead lock frequency.

Number of Deadlocks since the Instance Restart

SELECT *
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Number of Deadlocks/sec'
AND instance_name = '_Total'

Number of Connections by Login as well as By Client

--  Get logins that are connected and how many sessions they have
SELECT  login_name ,
        COUNT(session_id) AS [session_count]
FROM    sys.dm_exec_sessions WITH ( NOLOCK )
WHERE   session_id > 50  -- filter out system SPIDs
GROUP BY login_name
ORDER BY COUNT(session_id) DESC
-- Get a count of SQL connections by IP address
SELECT  ec.client_net_address ,
        es.[program_name] ,
        es.[host_name] ,
        es.login_name ,
        COUNT(ec.session_id) AS [connection count]
FROM    sys.dm_exec_sessions AS es WITH ( NOLOCK )
        INNER JOIN sys.dm_exec_connections AS ec WITH ( NOLOCK ) ON es.session_id = ec.session_id
WHERE   1 = 1 -- es.login_name = 'loginname'
GROUP BY ec.client_net_address ,
        es.[program_name] ,
        es.[host_name] ,
        es.login_name
ORDER BY ec.client_net_address ,
        es.[program_name]

Results:

Current Tasks

CurrentSnapshot

TaskCntByScheduler

SQLHandle-SQLText

DatabaseSizeInfo

SQL Server Memory Usage

Leave a Reply

Your email address will not be published. Required fields are marked *