我有一个后台进程运行,它可以同时其运行任务管理器中可以看到。 我需要从我的数据库查询,该进程是否正在运行或不我曾尝试以下查询
select * from sys.dm_os_threads
select * FROM sys.dm_os_tasks
但它不告诉我系统上所有正在运行的进程
我有一个后台进程运行,它可以同时其运行任务管理器中可以看到。 我需要从我的数据库查询,该进程是否正在运行或不我曾尝试以下查询
select * from sys.dm_os_threads
select * FROM sys.dm_os_tasks
但它不告诉我系统上所有正在运行的进程
我有一个后台进程运行,它可以同时其运行任务管理器中可以看到。 我需要从我的数据库查询,该进程是否正在运行或不
我希望你是在谈论后台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的文档在线阅读书籍
使用此查询
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服务器的过程,但另一个进程,没有内置的动态管理视图或功能将能够原生向你展示这些信息。 你有两个选择,一个是写一个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