【问题标题】: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

      然后,跳过重启任务。非常感谢大家的支持。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-21
        • 1970-01-01
        • 1970-01-01
        • 2014-10-15
        • 2011-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多