SQL serverクエリー・ユーザーの接続数

4244 ワード

方法1:
SELECT * FROM 
[Master].[dbo].[SYSPROCESSES] WHERE [DBID] 
IN 
(
  SELECT 
   [DBID]
  FROM 
   [Master].[dbo].[SYSDATABASES] 
  WHERE 
   NAME='escm2'
)

方法2:SP_を実行するWHOまたはSP_WHO2 sp_who[**@loginame=]'login'|session ID|'ACTIVE'*]結果:background:セッションはデッドロック検出などのバックグラウンドタスクを実行しています.rollback:セッションには処理中のトランザクションロールバックがあります.pending:セッションは、作業スレッドが使用可能になるのを待っています.runnable:セッションのタスクは、取得時間スレッドを待つ間に計画プログラムの実行可能なキューに存在します.spinloop:セッションのタスクは、調整ロックが使用可能になるのを待っています.suspended:I/Oなどのイベントの完了をセッションが待機しています.
メソッド3:SessionIdクエリーによる
CREATE PROCEDURE sp_who3 
(  @SessionID int = NULL ) 
AS
BEGIN
SELECT
    SPID                = er.session_id 
    ,Status             = ses.status 
    ,[Login]            = ses.login_name 
    ,Host               = ses.host_name 
    ,BlkBy              = er.blocking_session_id 
    ,DBName             = DB_Name(er.database_id) 
    ,CommandType        = er.command 
    ,SQLStatement       = st.text 
    ,ObjectName         = OBJECT_NAME(st.objectid) 
    ,ElapsedMS          = er.total_elapsed_time 
    ,CPUTime            = er.cpu_time 
    ,IOReads            = er.logical_reads + er.reads 
    ,IOWrites           = er.writes 
    ,LastWaitType       = er.last_wait_type 
    ,StartTime          = er.start_time 
    ,Protocol           = con.net_transport 
    ,ConnectionWrites   = con.num_writes 
    ,ConnectionReads    = con.num_reads 
    ,ClientAddress      = con.client_net_address 
    ,Authentication     = con.auth_scheme 
FROM sys.dm_exec_requests er 
OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st 
LEFT JOIN sys.dm_exec_sessions ses 
ON ses.session_id = er.session_id 
LEFT JOIN sys.dm_exec_connections con 
ON con.session_id = ses.session_id 
WHERE er.session_id > 50 
    AND @SessionID IS NULL OR er.session_id = @SessionID 
ORDER BY
    er.blocking_session_id DESC
    ,er.session_id 
END

どのようにwho_を検索しますspストレージプロセスの結果?
  • テンポラリテーブル
  • を通過する.
    
    CREATE TABLE #sp_who2
    (
    SPID INT,
    Status VARCHAR(255),
          Login  VARCHAR(255),HostName  VARCHAR(255),
          BlkBy  VARCHAR(255),DBName  VARCHAR(255),
          Command VARCHAR(255),CPUTime INT,
          DiskIO INT,LastBatch VARCHAR(255),
          ProgramName VARCHAR(255),SPID2 INT,
          REQUESTID INT);
    
    INSERT INTO #sp_who2 EXEC sp_who2
    
    SELECT      * 
    FROM        #sp_who2
    -- Add any filtering of the results here :
    WHERE       DBName = 'escm2'
    -- Add any sorting of the results here :
    ORDER BY    DBName ASC
     
    DROP TABLE #sp_who2
    
  • またはテンポラリ・テーブル
  • declare @tempTable table (SPID INT,Status VARCHAR(255),
          Login  VARCHAR(255),HostName  VARCHAR(255),
          BlkBy  VARCHAR(255),DBName  VARCHAR(255),
          Command VARCHAR(255),CPUTime INT,
          DiskIO INT,LastBatch VARCHAR(255),
          ProgramName VARCHAR(255),SPID2 INT,
          REQUESTID INT);
    
    INSERT INTO @tempTable 
    EXEC sp_who2
    select *
    from @tempTable
    where DBName = 'escm2'
    

    現在のサービス・ユーザーが実行するSQLの文を問い合わせる
    --   SQL  
    select 
        SPID                = er.session_id 
        ,Status             = ses.status 
        ,[Login]            = ses.login_name 
        ,Host               = ses.host_name 
        ,BlkBy              = er.blocking_session_id 
        ,DBName             = DB_Name(er.database_id) 
        ,CommandType        = er.command 
        ,SQLStatement       = st.text 
        ,ObjectName         = OBJECT_NAME(st.objectid) 
        ,ElapsedMS          = er.total_elapsed_time 
        ,CPUTime            = er.cpu_time 
        ,IOReads            = er.logical_reads + er.reads 
        ,IOWrites           = er.writes 
        ,LastWaitType       = er.last_wait_type 
        ,StartTime          = er.start_time 
        ,Protocol           = con.net_transport 
        ,ConnectionWrites   = con.num_writes 
        ,ConnectionReads    = con.num_reads 
        ,ClientAddress      = con.client_net_address 
        ,Authentication     = con.auth_scheme 
    FROM sys.dm_exec_requests er 
    OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st 
    LEFT JOIN sys.dm_exec_sessions ses 
    ON ses.session_id = er.session_id 
    LEFT JOIN sys.dm_exec_connections con 
    ON con.session_id = ses.session_id 
    WHERE er.session_id > 50 
    ORDER BY
        er.blocking_session_id DESC