SQL Server - 挂起进程 - SPID查询

Chr*_*ris 13 sql-server spid

如果我有SPID,如何找到正在执行的关联查询.试图弄清楚哪个查询正在关联,因为该过程似乎已挂起.

小智 15

--Find Current SQL Statements that are Running
SELECT   SPID           = er.session_id
        ,STATUS         = ses.STATUS
        ,[Login]        = ses.login_name
        ,Host           = ses.host_name
        ,BlkBy          = er.blocking_session_id
        ,DBName         = DB_Name(er.database_id)
        ,CommandType    = er.command
        ,ObjectName     = OBJECT_NAME(st.objectid)
        ,CPUTime        = er.cpu_time
        ,StartTime      = er.start_time
        ,TimeElapsed    = CAST(GETDATE() - er.start_time AS TIME)
        ,SQLStatement   = st.text
FROM    sys.dm_exec_requests er
    OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st
    LEFT JOIN sys.dm_exec_sessions ses
        ON ses.session_id = er.session_id
    LEFT JOIN sys.dm_exec_connections con
        ON con.session_id = ses.session_id
WHERE   st.text IS NOT NULL
Run Code Online (Sandbox Code Playgroud)


SQL*_*ace 12

什么版本的sql server?2000年及以后你可以做到

dbcc inputbuffer (spid)
Run Code Online (Sandbox Code Playgroud)

这将给出前255个字符

用spid的数字替换spid

对于2005及以上,将@@ SPID更改为您正在寻找的spid

select dest.*
from  sys.dm_exec_requests as der
             cross apply sys.dm_exec_sql_text (der.sql_handle) as dest
where session_id = @@spid
Run Code Online (Sandbox Code Playgroud)