Home  >  Article  >  Database  >  ----------------------SQLOS相关查询,SQLSERVER线程,调度器,

----------------------SQLOS相关查询,SQLSERVER线程,调度器,

WBOY
WBOYOriginal
2016-06-07 15:40:181062browse

--SELECT * FROM SYS.dm_os_schedulers --SQL SERVER的每个调度器 --select affinity from sys.dm_os_workers --SQL SERVER的每个工作任务 --select * from sys.dm_os_threads --在SQL SERVER进程中的所有SQLOS线程列表 --select * from sys.dm_os_tasks --S

--SELECT * FROM SYS.dm_os_schedulers --SQL SERVER的每个调度器
--select affinity from sys.dm_os_workers --SQL SERVER的每个工作任务
--select * from sys.dm_os_threads --在SQL SERVER进程中的所有SQLOS线程列表
--select * from sys.dm_os_tasks  --SQL SERVER实例上每一个活动的任务
--select * from sys.dm_os_waiting_task --正在等待资源的任务队列的信息


--SQL SERVER任务所在的调度器监视器
SELECT
 t1.session_id,
 CONVERT(varchar(10),t1.status) as status,
 CONVERT(varchar(10),t1.command) as command,
 CONVERT(varchar(10),t2.state) as work_state,
 t1.task_address
FROM 
 SYS.dm_exec_requests t1 join sys.dm_os_workers t2
on
 t1.task_address=t2.task_address
where
 t1.command='resource monitor'
 

--查询跨所有计划程序输出 SQL Server 中的工作线程和任务的状态 
SELECT
    scheduler_id,
    cpu_id,
    parent_node_id,
    current_tasks_count,
    runnable_tasks_count,
    current_workers_count,
    active_workers_count,
    work_queue_count
FROM sys.dm_os_schedulers

/*-------说明---------------
计划程序的 ID 值 ID >= 1048576 的计划程序称为隐藏计划程序。
计划程序 255 代表专用管理员连接 (DAC)。
每个实例都有一个 DAC 计划程序。
当 runnable_tasks_count 返回 0 时,表示没有正在运行的当前任务。但是,可能存在活动会话。
active_workers_count 代表具有关联任务并且正在非抢先模式下运行的所有工作线程。某些任务(例如,网络侦听器)在抢先计划下运行。
隐藏计划程序不会处理典型用户请求。DAC 计划程序例外。
*/


--查找工作线程的状态
SELECT
    scheduler_id,
    cpu_id,
    current_tasks_count,
    runnable_tasks_count,
    current_workers_count,
    active_workers_count,
    work_queue_count
FROM
 sys.dm_os_schedulers
WHERE
    scheduler_id

 

--工作线程已在 SUSPENDED 或 RUNNABLE 状态下运行的时间
SELECT
    t1.session_id,
    CONVERT(varchar(10), t1.status) AS status,
    CONVERT(varchar(15), t1.command) AS command,
    CONVERT(varchar(10), t2.state) AS worker_state,
    w_suspended =
      CASE t2.wait_started_ms_ticks
        WHEN 0 THEN 0
        ELSE
          t3.ms_ticks - t2.wait_started_ms_ticks
      END,
    w_runnable =
      CASE t2.wait_resumed_ms_ticks
        WHEN 0 THEN 0
        ELSE
          t3.ms_ticks - t2.wait_resumed_ms_ticks
      END
  FROM sys.dm_exec_requests AS t1
  INNER JOIN sys.dm_os_workers AS t2
    ON t2.task_address = t1.task_address
  CROSS JOIN sys.dm_os_sys_info AS t3
  WHERE t1.scheduler_id IS NOT NULL


--返回除正在睡眠的以外的会话的信息,这样可以通过WINDOWS性能监视器监视线程的性能
SELECT STasks.session_id, SThreads.os_thread_id
  FROM sys.dm_os_tasks AS STasks
  INNER JOIN sys.dm_os_threads AS SThreads
    ON STasks.worker_address = SThreads.worker_address
  WHERE STasks.session_id IS NOT NULL
  ORDER BY STasks.session_id
 
 
 
--查找正在运行非 SQL Server 启动的线程的工作以及执行的时间
SELECT * FROM sys.dm_os_threads WHERE started_by_sqlservr = 0


--查询是否存在活动的DAC连接,如果为空,则不存在
SELECT
 t2.session_id
FROM
 sys.tcp_endpoints  AS T1 JOIN SYS.dm_exec_sessions AS T2
ON
 T1.endpoint_id=T2.endpoint_id
WHERE
 T1.name='Dedicated Admin Connection'

 

 


 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn