我想在重启实例之前获取活动用户会话数,排除任何后台会话。
只是想使用以下查询,但我不确定如何通过 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 排除 tempdb 的选择会话。
SELECT COUNT(*) FROM sys.dm_exec_requests WHERE session_id in (select session_id from sys.dm_exec_sessions where 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')
非常感谢您的及时回复,德米特里 :) 我可以按如下方式实现;
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' and session_id < > @@spid)"
for /F %%A in ('sqlcmd -Q%StrSQL% %CONN_PARAM%') do set USER_SESSION_CNT=%%A
echo Current User Session Cnt:%USER_SESSION_CNT%
如果 %USER_SESSION_CNT% gtr 0 转到 WARNING_USER_SESSION
然后,跳过重启任务。非常感谢大家的支持。