【问题标题】:How To Detect Active User Session by sqlcmd如何通过 sqlcmd 检测活动用户会话
【发布时间】:2018-12-11 10:09:06
【问题描述】:
我想在重启实例之前获取活动用户会话数,排除任何后台会话。
只是想使用以下查询,但我不确定如何通过 SQL Server 排除 tempdb 的选择会话。
SELECT COUNT(*) FROM sys.dm_exec_requests WHERE session_id in (select session_id from sys.dm_exec_sessions where status = 'running')
任何建议将再次受到赞赏。
【问题讨论】:
标签:
sql-server
session
detect
sqlcmd
tempdb
【解决方案1】:
如果您只需要活动用户会话并排除 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')
【解决方案2】:
非常感谢您的及时回复,Dmitry :) 我可以按如下方式实现;
set StrSQL="SET NoCount ON;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'和 session_id @@spid)"
for /F %%A in ('sqlcmd -Q%StrSQL% %CONN_PARAM%') 设置 USER_SESSION_CNT=%%A
echo 当前用户会话数:%USER_SESSION_CNT%
如果 %USER_SESSION_CNT% gtr 0 转到 WARNING_USER_SESSION
然后,跳过重启任务。非常感谢大家的支持。