从SQL Server查询后台进程(Check background process from SQ

2019-10-21 20:59发布

我有一个后台进程运行,它可以同时其运行任务管理器中可以看到。 我需要从我的数据库查询,该进程是否正在运行或不我曾尝试以下查询

select * from sys.dm_os_threads
select * FROM sys.dm_os_tasks

但它不告诉我系统上所有正在运行的进程

Answer 1:

我有一个后台进程运行,它可以同时其运行任务管理器中可以看到。 我需要从我的数据库查询,该进程是否正在运行或不

我希望你是在谈论后台SQL Server进程。 下面的查询只显示与SQL Server的信息

SQL服务器上运行的所有进程可以通过查询DMV可以看出

select * from  sys.dm_exec_requests
select * from sys.dm_exec_sessions 
select * from sys.dm_exec_connections

你可以对这些DMV的文档在线阅读书籍



Answer 2:

使用此查询

select 
                 tblSysProcess.cmd
               , tblSysProcess.physical_io IOUsage
               , tblSysProcess.cpu as CPUusage
               , tblSysProcess.waittype as waitType
               , tblSysProcess.waittime as waitTime
               , tblSysProcess.lastwaittype as lastWaitType
               , tblSysProcess.waitResource as waitResource
               , tblSysProcess.dbid as databaseID
               , case
                     when (dbid > 0) then db_name(dbid) 
                     else ''
                 end as dbName
               , memusage as memUsage
               , status

       from  master.dbo.sysprocesses tblSysProcess

       where 

              (

                  --background process    
                  (tblSysProcess.spid < 50)

              )


Answer 3:

select db_name(dbid),cmd,spid,status 
from 
    sys.sysprocesses 
        where 
            db_name(dbid) = 'dbname' and status = 'background'


Answer 4:

因此,它看起来像你不是想看到机器上的其他应用程序的SQL服务器的过程,但另一个进程,没有内置的动态管理视图或功能将能够原生向你展示这些信息。 你有两个选择,一个是写一个CLR存储过程或函数来检查的过程中,另一种是使用xp_cmdshell的获取任务列表,你可以是这样做的:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
GO
EXEC xp_cmdshell 'tasklist.exe'
GO
EXEC sp_configure 'xp_cmdshell', 0
RECONFIGURE

这将列出所有正在运行的进程的机器上,你可以推数据到一个表,如果你如果需要,愿意进行进一步的分析,也可以与tasklist.exe参数发挥只是看你有兴趣在这个过程中但要记住关闭xp_cmdshell的,只要你不需要它,因为它可能会带来安全风险。



Answer 5:

尝试这个;

EXEC sp_who1

EXEC sp_who2

SELECT *
FROM   MASTER..sysprocesses

SELECT *
FROM   sys.dm_exec_sessions
WHERE  is_user_process = 1


文章来源: Check background process from SQL Server