Some useful SQL queries to get who is connected to a database, long running queries, queries that lock the database, high cpu queries.
Who is connected?
Sp_who
or
Sp_who2
Kill session:
Kill [SESSIONID]
Long
running queries:
SELECT
sqltext.TEXT,
req.session_id,
req.status,
req.command,
req.cpu_time,
req.total_elapsed_time
FROM
sys.dm_exec_requests req
CROSS
APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
High CPU:
SELECT
s.session_id,
r.status,
r.blocking_session_id
'Blk by',
r.wait_type,
wait_resource,
r.wait_time
/ (1000 * 60) 'Wait M',
r.cpu_time,
r.logical_reads,
r.reads,
r.writes,
r.total_elapsed_time
/ (1000 * 60) 'Elaps M',
Substring(st.TEXT,(r.statement_start_offset
/ 2) + 1,
((CASE
r.statement_end_offset
WHEN -1
THEN
Datalength(st.TEXT)
ELSE
r.statement_end_offset
END -
r.statement_start_offset) / 2) + 1) AS statement_text,
Coalesce(Quotename(Db_name(st.dbid))
+ N'.' + Quotename(Object_schema_name(st.objectid, st.dbid)) + N'.' +
Quotename(Object_name(st.objectid,
st.dbid)), '') AS command_text,
r.command,
s.login_name,
s.host_name,
s.program_name,
s.last_request_end_time,
s.login_time,
r.open_transaction_count
FROM
sys.dm_exec_sessions AS s
JOIN
sys.dm_exec_requests AS r
ON
r.session_id = s.session_id
CROSS
APPLY sys.Dm_exec_sql_text(r.sql_handle) AS st
WHERE
r.session_id != @@SPID
ORDER BY
r.cpu_time desc
Transcation Locks:
SELECT L.request_session_id AS SPID,
DB_NAME(L.resource_database_id) AS DatabaseName,
O.Name AS LockedObjectName,
P.object_id AS LockedObjectId,
L.resource_type AS LockedResource,
L.request_mode AS LockType,
ST.text AS SqlStatementText,
ES.login_name AS LoginName,
ES.host_name AS HostName,
TST.is_user_transaction as IsUserTransaction,
AT.name as TransactionName,
CN.auth_scheme as AuthenticationMethod
FROM sys.dm_tran_locks L
JOIN sys.partitions P ON P.hobt_id = L.resource_associated_entity_id
JOIN sys.objects O ON O.object_id = P.object_id
JOIN sys.dm_exec_sessions ES ON ES.session_id = L.request_session_id
JOIN sys.dm_tran_session_transactions TST ON ES.session_id = TST.session_id
JOIN sys.dm_tran_active_transactions AT ON TST.transaction_id = AT.transaction_id
JOIN sys.dm_exec_connections CN ON CN.session_id = ES.session_id
CROSS APPLY sys.dm_exec_sql_text(CN.most_recent_sql_handle) AS ST
WHERE resource_database_id = db_id()
ORDER BY L.request_session_id
Comments
Post a Comment