我有一个后台进程正在运行,它运行时可以在任务管理器中看到。我需要从我的数据库检查该进程是否正在运行 我尝试过以下查询
select * from sys.dm_os_threads
select * FROM sys.dm_os_tasks
但它没有显示系统上运行的所有进程
我有一个后台进程正在运行,它运行时可以在任务管理器中看到。我需要从我的数据库中检查该进程是否正在运行
我希望您谈论的是后台 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 文档的书籍
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)
)
select db_name(dbid),cmd,spid,status
from
sys.sysprocesses
where
db_name(dbid) = 'dbname' and status = 'background'
所以看起来您并不是在尝试查看 SQL Server 进程,而是在计算机上查看另一个应用程序的另一个进程,内置的 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,因为它可能存在安全风险。
试试这个;
EXEC sp_who1
EXEC sp_who2
SELECT *
FROM MASTER..sysprocesses
SELECT *
FROM sys.dm_exec_sessions
WHERE is_user_process = 1