SQL Server 2012で実行されているSQLクエリを見つけることができるプログラムまたはSQLクエリはありますか?以前のバージョンのSQLServerには、実際のクエリコンテンツまたはストアドプロシージャ名が表示されるツールがあったと思いますか?
6 に答える
権限によっては、このクエリが機能する場合があります。
SELECT sqltext.TEXT,
req.session_id,
req.status,
req.command,
req.cpu_time,
req.total_elapsed_time
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
参照:http://blog.sqlauthority.com/2009/01/07/sql-server-find-currently-running-query-t-sql
これは、SQL Server DMV の In Action book からのものです。
出力には、spid (プロセス識別子)、ecid (これは同じ spid 内のスレッドに似ており、並行して実行されているクエリを識別するのに役立ちます)、SQL を実行しているユーザー、ステータス (SQL が実行中か待機中か) が表示されます。 )、待機ステータス (待機している理由)、ホスト名、ドメイン名、および開始時刻 (バッチが実行されている時間を判断するのに役立ちます)。
良い部分は、クエリと親クエリです。たとえば、ストアド プロシージャが親として表示され、実行中のストアド プロシージャ内のクエリが表示されます。それは私にとって非常に便利です。これが他の誰かに役立つことを願っています。
USE master
GO
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT
er.session_Id AS [Spid]
, sp.ecid
, er.start_time
, DATEDIFF(SS,er.start_time,GETDATE()) as [Age Seconds]
, sp.nt_username
, er.status
, er.wait_type
, SUBSTRING (qt.text, (er.statement_start_offset/2) + 1,
((CASE WHEN er.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE er.statement_end_offset
END - er.statement_start_offset)/2) + 1) AS [Individual Query]
, qt.text AS [Parent Query]
, sp.program_name
, sp.Hostname
, sp.nt_domain
FROM sys.dm_exec_requests er
INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt
WHERE session_Id > 50
AND session_Id NOT IN (@@SPID)
ORDER BY session_Id, ecid
SQL プロファイラーhttp://msdn.microsoft.com/en-us/library/bb500441.aspxをインストールするために必要なものは次のとおりです。 ただし、探している場合は、これを読むことをお勧めしますhttp://blog.sqlauthority.com/2009/08/03/sql-server-introduction-to-sql-server-2008-profiler-2/本番環境で実行してください。クエリを見てこれを見て、それが役立つかどうかを確認する別のより良い方法があります http://www.youtube.com/watch?v=vvziPI5OQyE
このツールはSQLServerProfilerと呼ばれ、現在も標準ツールセットの一部です。
あなたはSQLプロファイラーについて話している。