从这里(脚本 1)我正在使用显示的脚本来查找并行 AG 线程的 spid
select
db_name(database_id) as dbname,
command, session_id
from
sys.dm_exec_requests
where
command in ('PARALLEL REDO HELP TASK', 'PARALLEL REDO TASK', 'DB STARTUP')
and database_id = db_id('AdventureWorks2016')
我们正在尝试解决重做队列问题,因此如果在相同的 CPU id 上运行,则需要查找用户查询 spid
我从这里找到了下面的查询(脚本 2),它为运行查询提供了 cpu id
SELECT
s.cpu_id,
s.status,
db_name(r.database_id) as [databaseName],
w.last_wait_type,
w.return_code,
t.task_state,
t.pending_io_count,
t.session_id,
r.sql_handle,
te.text
FROM sys.dm_os_Schedulers s
JOIN sys.dm_os_workers w
ON w.scheduler_address = s.scheduler_address
JOIN sys.dm_os_tasks t
ON t.task_address = w.task_address
JOIN sys.dm_exec_requests r
ON r.scheduler_id = s.scheduler_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) te
order by 1,3
我如何将以上 2 个查询作为单个脚本加入,以告诉我来自脚本 2 的用户查询是否实际上在与脚本 1 中的 spid 相同的 cpu id 上运行,或者可能是按 cpu id 分组数据以显示在这些 cpu id 上运行的查询。不知何故,脚本 2 显示了对同一 cpu id 上的多个 spid 的相同查询。
谢谢