web-dev-qa-db-ja.com

SQL SERVERでのSQLクエリの進行状況の監視

バックアップ/復元操作の進行状況を監視する方法を尋ねる同様の質問を見ました: SQL Serverのバックアップまたは復元プロセスの進行状況を判断するために使用できるSQLスクリプトはありますか?

同様のクエリ/方法があるかどうかを知り、クエリが終了するまでの残り時間を確認します。たとえば、通常は1つのクエリ経過時間は5分です。クエリの実行中に終了するまでの残り時間を教えてください。

19
Roni Vered

残り時間を知る方法はありません。クエリの実行時間は、他のクエリのロック/ブロック、リソース(CPU /ディスク使用量)を消費する他のプロセス、オペレーティングシステム、ネットワークなど、実際のクエリ以外の多くの要素に依存します。5分のクエリが実行されている場合他の誰かが大きなレポートを開始した場合、クエリは5:30に実行される可能性があります。誰かが大きなファイルのダウンロードを開始し、すべてのネットワーク帯域幅を占有した場合はどうなりますか? OSがバックグラウンドで何かを実行することを決定した場合など。すべての行が返されるまで、クエリは実行されませんが、可変時間フレームで実行できます。

17
KM.

必要なものは ライブクエリ統計 です。

SSMSの最新バージョンでは、通常のクエリプランを提供するボタンの横にあるボタンを使用してアクティブ化できます。

enter image description here

これにより、ライブクエリプランが得られます。

enter image description here

下部に全体の進行状況が表示されます。

enter image description here

20
John

sys.dm_exec_requestsはその情報を持っているので、そのような何かがあなたに進歩を与えます:

SELECT 
percent_complete
FROM sys.dm_exec_requests
--where session_id=51 or command like 'restore%'
14
Andrey.ca

はい、プロセスの実行に影響を与える予期しない状況が発生しない限り、推定経過時間を知ることができます。

Select total_elapsed_time,
 * from sys.dm_exec_sessions where session_id="your Id here" 
6
JameSQL