Laufende Prozesse einschließlich deren Sql Statements ermitteln
„Die Programme laufen heute wieder so träge, es dauert Alles Ewigkeiten“. Ein durchaus typischer Anruf eines Anwenders, der einen vermuten lässt, dass der Mircosoft Sql Server ausgelastet ist. Da fragt man als DBA sich wieder, was da alles auf dem Sql Server läuft und ihn der auslastet.
Auskunft kann hier der Server selbst geben. Über die „Dynamic Management Views (DMV)“ (ab Sql Server 2005) kann man die aktuellen Daten zu den Prozessen inkl. den ausgeführten Sql Statements ermitteln. Voraussetzung ist natürlich, das man sich überhaupt noch verbinden und der Sql Server antworten kann; aber dazu gibt es zur Not ja noch die DAC = Dedicated Admin Connection.
-- Ermittelt alle laufende Prozesse mit deren -- Sql Statements SELECT PRO.spid, PRO.loginame, PRO.hostname, PRO.program_name, DB.name AS DatabaseName, PRO.open_tran, PRO.blocked, REQ.command, SQL.text AS SqlStatement, SES.prev_error, SES.row_count, REQ.wait_resource, REQ.wait_time FROM sys.sysprocesses AS PRO CROSS APPLY sys.dm_exec_sql_text(PRO.sql_handle) AS SQL LEFT JOIN sys.sysdatabases AS DB ON SQL.dbid = DB.dbid LEFT JOIN sys.dm_exec_requests AS REQ ON PRO.request_id = REQ.request_id AND PRO.spid = REQ.session_id LEFT JOIN sys.dm_exec_sessions AS SES ON REQ.session_id = SES.session_id