Πώς βρίσκουμε τι queries τρέχουν αυτή τη στιγμή στον SQL Server

Πώς βρίσκουμε τι queries τρέχουν αυτή τη στιγμή στον SQL Server
Πώς βρίσκουμε τι queries τρέχουν αυτή τη στιγμή στον SQL Server

Πολλές φορές θα χρειαστεί να ψάξουμε γρήγορα τι queries τρέχουν σε ένα instance του SQL Server. Σε αυτό το άρθρο θα δούμε ένα query που έχω γράψει που μπορεί να μας αντλήσει άμεσα όση πληροφορία χρειαζόμαστε.

To query αντλεί πληροφορία από τα συστημικά views dm_exec_requests, databases, dm_exec_sql_text dm_exec_sesions, dm_exec_query_memory_grants και dm_exec_query_plan.

Μέσα από αυτό το query μπορούμε να δούμε τα παρακάτω:

  • Σε ποια βάση δεδομένων τρέχει
  • Τι τύπου εντολή είναι (select,update,delete,backup … )
  • Το sql text
  • Τι καθυστερεί το query
  • Αν το μπλοκάρει κάποιο άλλο session
  • Την μνήμη που καταλαμβάνει
  • Το πλάνο του
  • Από ποιο μηχάνημα τρέχει
  • Από ποιο πρόγραμμα τρέχει
  • Από ποιον χρήστη τρέχει

To query

Το μόνο που έχουμε να κάνουμε είναι να τρέξουμε το παρακάτω select query σε ένα query window:

SELECT d.name,p.command,p.session_id,t.text,p.start_time,p.status,p.total_elapsed_time/1000 as elapsed_time_secs,wait_time/1000 as wait_time,last_wait_type,p.blocking_session_id,m.granted_memory_kb,m.grant_time,p.plan_handle,ph.query_plan,p.sql_handle,dr.host_name,dr.program_name,dr.login_name
FROM sys.dm_exec_requests p
inner join sys.databases d on d.database_id = p.database_id
outer apply sys.dm_exec_sql_text(p.sql_handle) t
outer apply sys.dm_exec_query_plan(p.plan_handle) as ph
inner join sys.dm_exec_sessions dr on dr.session_id = p.session_id
left join sys.dm_exec_query_memory_grants m on m.session_id = p.session_id
where 1=1
and text is not null
--and p.session_id in (select spid from sysprocesses where blocked<>0) --uncomment for only blocking queries
order by  p.start_time;

Το αποτέλεσμα

Τρέχοντας το query θα επιστρέψει τα αποτελέσματα όπως παρακάτω. Επίσης επιλέγοντας διπλό κλικ στο query_plan θα ανοίξει το γραφικό του κάθε πλάνου:

Πώς βρίσκουμε τι queries τρέχουν αυτή τη στιγμή στον SQL Server

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση