Sql server 如何通过sqlcmd检测活动用户会话

Sql server 如何通过sqlcmd检测活动用户会话,sql-server,session,detect,sqlcmd,tempdb,Sql Server,Session,Detect,Sqlcmd,Tempdb,我想在重新启动实例之前获取活动用户会话数,排除任何后台会话 正在考虑使用以下查询,但我不确定如何通过SQL Server排除tempdb的select会话 从sys.dm_exec_请求中选择COUNT*,其中session_id在从sys.dm_exec_sessions中选择session_id,其中status='running' 如果您只需要活动用户会话而不需要tempdb会话,我们将再次感谢您的建议。 试试这个 select count(*) FROM sys.dm_exec_requ

我想在重新启动实例之前获取活动用户会话数,排除任何后台会话

正在考虑使用以下查询,但我不确定如何通过SQL Server排除tempdb的select会话

从sys.dm_exec_请求中选择COUNT*,其中session_id在从sys.dm_exec_sessions中选择session_id,其中status='running'


如果您只需要活动用户会话而不需要tempdb会话,我们将再次感谢您的建议。

试试这个

select count(*) FROM sys.dm_exec_requests 
where 
    database_id <> DB_ID('tempdb') 
    and 
    session_id in 
        (select session_id from sys.dm_exec_sessions where is_user_process = 1 and status='running')

非常感谢你的及时回复,德米特里:我可以做到如下

设置StrSQL=设置NoCount ON;从sys.dm_exec_请求中选择COUNT*FROM sys.dm_exec_请求,其中数据库_id DB_id'tempdb'和会话_id在从sys.dm_exec_会话中选择会话_id,其中用户_进程=1,状态为='running',会话_id@@spid 对于'sqlcmd-Q%StrSQL%%CONN\u PARAM%%中的/F%%A,请设置用户会话\u CNT=%A 回显当前用户会话Cnt:%User\u Session\u Cnt%

如果%USER\u SESSION\u CNT%gtr 0转到警告\u USER\u SESSION

然后,跳过重新启动任务。非常感谢你们的支持