2016-07-26 12 views
0

SQLサーバーには、ユーザーが実行しているクエリを確認する方法はありますか?私はどのようなクエリが実行されているかを見る方法についての情報を見つけましたが、ユーザーIDまたはログインが何を実行しているかを見ることができません。私は[sys。]に対してクエリを実行するのが初めてで、どんな助けでも大歓迎です。ユーザーID /ログインで実行されているSQLクエリ

SELECT 
      r.start_time [Start Time] 
     , session_ID [SPID] 
     , DB_NAME(database_id) [Database] 
     , SUBSTRING(t.text,(r.statement_start_offset/2)+1, 
        CASE WHEN statement_end_offset=-1 OR statement_end_offset=0 
        THEN (DATALENGTH(t.Text)-r.statement_start_offset/2)+1 
        ELSE (r.statement_end_offset-r.statement_start_offset)/2+1 
        END) [Executing SQL] 
     , Status 
     , command 
     , wait_type 
     , wait_time 
     , wait_resource 
     , last_wait_type 
FROM 
      sys.dm_exec_requests r 
      OUTER APPLY 
        sys.dm_exec_sql_text(sql_handle) t 
WHERE 
      session_id > 50 -- 
ORDER BY 
      r.start_time 

ただし、ログインIDは表示されません。 時々、誰が何を実行しているのかを特定したい。

EDIT:上記のクエリのソースhttp://www.sqlmatters.com/Articles/See%20what%20queries%20are%20currently%20running.aspx

+1

[SQLプロファイラ](https://msdn.microsoft.com/en-us/library/ms173799 = sql.105).aspx)は実行中のクエリを表示します。 –

答えて

1

使用SQL Serverプロファイラ([ツール]> [SSMSでSQL Serverプロファイラ)とトレースを作成します。ここに記載されている他の関連する方法や詳細があります。https://dba.stackexchange.com/a/49448/84000

0

SQLプロファイラにはNTUserNameとLoginNameがあります。新しいトレースを実行する前に、[イベント選択]タブの[すべての列を表示]を確認してください。 [カラムフィルタ]を使用して、クエリの期間、ログイン名などに基づいて結果をフィルタリングすることもできます。

関連する問題