2016-07-26 76 views
0

有没有在SQL服务器中查看用户正在运行的查询的方法?我找到了有关如何查看正在运行的查询的信息,但我无法查看哪些用户标识或登录正在运行什么。我是对[sys。]运行查询的新手,任何帮助都将不胜感激。用用户ID /登录运行的SQL查询

SELECT 
      r.start_time [Start Time] 
     , session_ID [SPID] 
     , DB_NAME(database_id) [Database] 
     , SUBSTRING(t.text,(r.statement_start_offset/2)+1, 
        CASE WHEN statement_end_offset=-1 OR statement_end_offset=0 
        THEN (DATALENGTH(t.Text)-r.statement_start_offset/2)+1 
        ELSE (r.statement_end_offset-r.statement_start_offset)/2+1 
        END) [Executing SQL] 
     , Status 
     , command 
     , wait_type 
     , wait_time 
     , wait_resource 
     , last_wait_type 
FROM 
      sys.dm_exec_requests r 
      OUTER APPLY 
        sys.dm_exec_sql_text(sql_handle) t 
WHERE 
      session_id > 50 -- 
ORDER BY 
      r.start_time 

但它不显示登录ID。 有时我想确定谁在运行什么。

编辑:来源为上述查询http://www.sqlmatters.com/Articles/See%20what%20queries%20are%20currently%20running.aspx

+1

[SQL Profiler](https://msdn.microsoft.com/en-us/library/ms173799(v = sql.105).aspx)会告诉你什么查询正在运行。 –

回答

0

SQL事件探查器有NTUserName和LoginName,它可以帮助你。在运行新跟踪之前,请确保在“事件选择”选项卡中显示“显示所有列”。您还可以使用“列过滤器”根据查询持续时间,登录名等筛选出结果。