回答:
これらをチェックする私のお気に入りの方法は、Adam Machanicの優れたsp_WhoIsActiveストアドプロシージャを使用することです。これを使用する方法に関するビデオと、コードをダウンロードするためのリンクを次に示します。
http://www.brentozar.com/archive/2010/09/sql-server-dba-scripts-how-to-find-slow-sql-server-queries/
問題は、結果を確認するために定期的に実行する必要があることです。このデータを定期的に収集する場合は、sp_WhoIsActiveの結果をテーブルにキャプチャすることに関するKendra Littleのチュートリアルを参照してください。
http://www.littlekendra.com/2011/02/01/whoisactive/
最後に、クエリがasync_network_ioを待つたびに何かを起動したい場合は、拡張イベントと呼ばれる新しいツールを使用できます。これは、魔法を起こすことができるSQL Serverエンジン内のデバッグポイントのようなものです。率直に言って、2008年に使用するのは少し苦痛です。
「async_wait_io」は待機タイプではありません。可能なASYNC%待機タイプは次のとおりです。
待機タイプのいくつかの良いリンク:
現在の待機を見つけるためのクエリへの私の行く:
SELECT req.session_id
,blocking_session_id
,ses.host_name
,DB_NAME(req.database_id) AS DB_NAME
,ses.login_name
,req.status
,req.command
,req.start_time
,req.cpu_time
,req.total_elapsed_time / 1000.0 AS total_elapsed_time
,req.command
,req.wait_type
,sqltext.text
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
JOIN sys.dm_exec_sessions ses
ON ses.session_id = req.session_id
WHERE req.wait_type IS NOT NULL
--WHERE req.wait_type = '?'