Check task manager make sure SQL Server is not consuming more than 50% RAM available. If CPU usage is high, check sysprocesses table in master database for the number of connections that are using SQL Server - make sure you check the ones with abnormally high CPU time and spid > 50 and to exclude all system connections.
This query will show which processes have been holding the connections for more than 3 hours, as well as blocking queries:
Next, check sys.dm_exec_query_stats for the top 10 longest running queries:
Also examine SQL Server logs to see if anything unusual has occurred.
This query will show which processes have been holding the connections for more than 3 hours, as well as blocking queries:
SELECT spid, sqltext.text as [SQL], blocked As [Process Blocked], loginame as [User], hostname as [Hostname], program_name as [Application], cpu as [CPU], physical_io as [Physical IO], memusage as [Memory Usage], open_tran as [Open Transactions], last_batch as [Time Last Ran], DB_NAME(sysprocesses.dbid) As [Database Name] FROM sysprocesses CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext WHERE spid > 50 AND Datediff(hh,last_batch,Getdate()) > 3 ORDER BY last_batch
Next, check sys.dm_exec_query_stats for the top 10 longest running queries:
SELECT DISTINCT TOP 10 t.TEXT QueryName, s.execution_count AS ExecutionCount, s.max_elapsed_time AS MaxElapsedTime, ISNULL(s.total_elapsed_time / 1000 / NULLIF(s.execution_count, 0), 0) AS AvgElapsedTime, s.creation_time AS LogCreatedOn, ISNULL(s.execution_count / 1000 / NULLIF(DATEDIFF(s, s.creation_time, GETDATE()), 0), 0) AS FrequencyPerSec FROM sys.dm_exec_query_stats s CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t ORDER BY s.max_elapsed_time DESC, ExecutionCount DESC
Also examine SQL Server logs to see if anything unusual has occurred.
No comments:
Post a Comment