我想在重新启动实例之前获得活动的用户会话计数,不包括任何后台会话。
我只是想使用以下查询,但是我不确定如何通过SQL Server排除tempdb的选择会话。
从sys.dm_exec_requests中选择COUNT(*)个session_id(从sys.dm_exec_sessions中选择session_id,其中status =“正在运行”)
任何建议将再次受到赞赏。
答案 0 :(得分:0)
如果您只需要活动的用户会话,而排除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')
答案 1 :(得分:0)
非常感谢您的迅速答复,德米特里(Dmitry):我可以如下实现:
set StrSQL =“ SET NoCount ON;从sys.dm_exec_requests中选择COUNT(*),在其中database_id <> DB_ID('tempdb')和session_id中(从sys.dm_exec_sessions中选择session_id,其中is_user_process = 1并且status ='running'和session_id <> @@ spid)“
为('sqlcmd -Q%StrSQL%%CONN_PARAM%')中的/ F %% A设置USER_SESSION_CNT = %% A
回显当前用户会话Cnt:%USER_SESSION_CNT%
如果%USER_SESSION_CNT%gtr 0转到WARNING_USER_SESSION
然后,跳过重新启动任务。非常感谢您的支持。