我正在运行后台进程,可以在任务管理器运行时看到它。我需要从我的数据库中检查进程是否正在运行 我尝试过以下查询
select * from sys.dm_os_threads
select * FROM sys.dm_os_tasks
但它并没有显示我在系统上运行的所有进程
答案 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)
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,因为它可能会带来安全风险。