从SQL Server检查后台进程

时间:2015-02-13 05:33:05

标签: sql-server background-process taskmanager

我正在运行后台进程,可以在任务管理器运行时看到它。我需要从我的数据库中检查进程是否正在运行 我尝试过以下查询

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

但它并没有显示我在系统上运行的所有进程

5 个答案:

答案 0 :(得分:0)

试试这个;

EXEC sp_who1

EXEC sp_who2

SELECT *
FROM   MASTER..sysprocesses

SELECT *
FROM   sys.dm_exec_sessions
WHERE  is_user_process = 1

答案 1 :(得分:0)

  

我正在运行后台进程,可以在任务管理器运行时看到它。我需要从我的数据库中检查进程是否正在运行

我希望你在谈论后台SQL Server进程。以下查询仅显示与SQL Server相关的信息

通过查询DMV可以看到在SQL Server上运行的所有进程

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

您可以在线阅读有关这些DMV的文档

答案 2 :(得分:0)

use this query

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)

              )

答案 3 :(得分:0)

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

答案 4 :(得分:0)

所以看起来你并没有试图看到一个SQL服务器进程,而是另一个应用程序在机器上的另一个进程,内置的DMV或函数都没有能够本地向您显示这些信息。你有几个选项,一个是编写一个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,因为它可能会带来安全风险。