2016-05-18 4 views

答えて

0

'MyDatabaseName'の代わりに次のSQLを使用します。データベースの名前、またはの値がNULLのいずれかです。

DECLARE 
    @Database NVARCHAR(MAX) = 'MyDatabaseName' 

SELECT 
    s.login_name AS [Login] 
    , ISNULL(db_name(p.dbid), N'') AS [Database] 
    , ISNULL(t.task_state, N'') AS [Task State] 
    , ISNULL(r.command, N'') AS [Command] 
    , s.cpu_time AS [Total CPU (ms)] 
    , (s.reads + s.writes) * 8/1024 AS [Total Physical I/O (MB)] 
    , s.memory_usage * 8192/1024 AS [Memory Use (KB)] 
FROM 
    sys.dm_exec_sessions AS s 
    LEFT OUTER JOIN sys.dm_exec_requests AS r ON (s.session_id = r.session_id) 
    LEFT OUTER JOIN sys.dm_os_tasks AS t ON (r.session_id = t.session_id AND r.request_id = t.request_id) 
    LEFT OUTER JOIN sys.dm_exec_requests AS r2 ON (s.session_id = r2.blocking_session_id) 
    LEFT OUTER JOIN sys.sysprocesses AS p ON (s.session_id = p.spid) 
WHERE 
    r2.session_id IS NOT NULL 
    AND (r.blocking_session_id = 0 OR r.session_id IS NULL) 
    AND (@Database IS NULL OR ISNULL(db_name(p.dbid), N'') = @Database) 
ORDER BY 
    s.cpu_time DESC 

注:NULLの値はそのサーバー内のすべてのデータベースをチェックします。

関連する問題