0

这里(脚本 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 的相同查询。

谢谢

4

0 回答 0