从SQL Server检查后台进程

voj3qocg  于 2023-01-16  发布在  SQL Server
关注(0)|答案(5)|浏览(311)

我有一个后台进程正在运行,它可以在任务管理器中看到,而它的运行。我需要从我的数据库检查,无论该进程是否正在运行我已经尝试了以下查询

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

但是它没有显示系统上运行的所有进程

c8ib6hqw

c8ib6hqw1#

我有一个后台进程正在运行,它可以在任务管理器中看到,而它的运行。我需要从我的数据库检查,该进程是否正在运行
我希望你说的是后台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文档的书籍

ckx4rj1h

ckx4rj1h2#

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)

              )
zd287kbt

zd287kbt3#

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

vnzz0bqm4#

看起来你并不是想看到一个SQL服务器进程,而是另一个应用程序的另一个进程,内置的DMV或函数都不能显示这些信息。你有两个选择,一个是写一个CLR存储的proc或函数来检查进程,另一个是使用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时关闭它,因为它可能会带来安全风险。

nue99wik

nue99wik5#

试试这个

EXEC sp_who1

EXEC sp_who2

SELECT *
FROM   MASTER..sysprocesses

SELECT *
FROM   sys.dm_exec_sessions
WHERE  is_user_process = 1

相关问题