要回答您的问题,会话 id 428 并行运行意味着多个线程,您可以使用以下查询查看它。登录名仅显示exec_context_id =0哪个是父线程。
SELECT er.session_id,
er.status,
er.command,
er.blocking_session_id,
er.wait_type,
th.os_thread_id,
os.cpu_id,
ot.exec_context_id,
ot.task_state,
st.text
FROM sys.dm_os_threads th
inner join sys.dm_os_tasks ot on th.worker_address = ot.worker_address
inner join sys.dm_exec_requests er on ot.session_id = er.session_id
inner join sys.dm_os_schedulers os on th.scheduler_address = os.scheduler_address
CROSS apply sys.Dm_exec_sql_text(er.sql_handle) st
WHERE er.session_id IN (SELECT session_id
FROM sys.dm_os_tasks
GROUP BY session_id
HAVING Count(exec_context_id) > 1
)
我建议你停止使用 sp_who2,有更好的方法来查看这些信息。即使您不想使用第三方脚本,您也最好加入以下 dmvs 并获得所需的内容。
sys.dm_exec_sessions sys.dm_exec_requests sys.dm_exec_sql_text sys.dm_exec_query_plan sys.dm_os_tasks
我使用Adam Machanic 的sp_whoisactive,不会尝试自己写任何东西。
要回答您的问题,会话 id 428 并行运行意味着多个线程,您可以使用以下查询查看它。登录名仅显示
exec_context_id =0
哪个是父线程。检查空白登录的另一种方法是使用 SSMS 活动监视器并使用进程选项卡下的“空白”过滤登录类别。当会话从您的 RD 会话登录到数据库时,它将显示正在运行的进程为空白。我正在使用该功能来检查打开会话和登录数据库所需的时间之间的延迟。如果您只使用 sp_who2,那么您只会获得一个时间点参考,而活动监视器将显示从空白到登录状态的变化。