sys.dm_os_threads (Transact-SQL)
SQL Server プロセスで実行されている SQL Server オペレーティング システム スレッドの一覧を返します。
列名 |
データ型 |
説明 |
---|---|---|
thread_address |
varbinary(8) |
スレッドのメモリ アドレス (主キー)。 |
started_by_sqlservr |
bit |
スレッドの開始元。 1 = SQL Server によってスレッドが開始されました。 0 =SQL Server 内の拡張ストアド プロシージャなど、他のコンポーネントによってスレッドが開始されました。 |
os_thread_id |
int |
オペレーティング システムによって割り当てられたスレッドの ID。 |
status |
int |
内部状態フラグ。 |
instruction_address |
varbinary(8) |
現在実行されている命令のアドレス。 |
creation_time |
datetime |
スレッドが作成された日時。 |
kernel_time |
bigint |
スレッドで使用されたカーネル時間。 |
usermode_time |
bigint |
スレッドで使用されたユーザー時間。 |
stack_base_address |
varbinary(8) |
スレッドにおける最上位のスタック アドレスのメモリ アドレス。 |
stack_end_address |
varbinary(8) |
スレッドにおける最下位のスタック アドレスのメモリ アドレス。 |
stack_bytes_committed |
int |
スタックでコミットされたバイト数。 |
stack_bytes_used |
int |
スレッドでアクティブに使用されているバイト数。 |
affinity |
bigint |
このスレッドが実行されている CPU マスク。ALTER SERVER CONFIGURATION SET PROCESS AFFINITY ステートメントで構成される値によって異なります。ソフトアフィニティの場合のスケジューラとは異なる場合があります。 |
Priority |
int |
スレッドの優先度値。 |
Locale |
int |
スレッド用にキャッシュされているロケール LCID。 |
Token |
varbinary(8) |
スレッド用にキャッシュされている権限借用トークン ハンドル。 |
is_impersonating |
int |
スレッドで Win32 権限借用が使用されているかどうかを示します。 1 = スレッドではプロセスの既定値と異なるセキュリティ資格情報が使用されています。これは、プロセスを作成したエンティティとは異なるエンティティの権限をスレッドで借用していることを示します。 |
is_waiting_on_loader_lock |
int |
スレッドでローダー ロックを待機中かどうかを示す、オペレーティング システムの状態。 |
fiber_data |
varbinary(8) |
スレッドで実行されている現在の Win32 ファイバー。これは、SQL Server が簡易プーリング用に構成されている場合にのみ該当します。 |
thread_handle |
varbinary(8) |
内部使用のみ。 |
event_handle |
varbinary(8) |
内部使用のみ。 |
scheduler_address |
varbinary(8) |
スレッドに関連付けられているスケジューラのメモリ アドレス。詳細については、「sys.dm_os_schedulers (Transact-SQL)」を参照してください。 |
worker_address |
varbinary(8) |
スレッドにバインドしているワーカーのメモリ アドレス。詳細については、「sys.dm_os_workers (Transact-SQL)」を参照してください。 |
fiber_context_address |
varbinary(8) |
内部ファイバー コンテキスト アドレス。これは、SQL Server が簡易プーリング用に構成されている場合にのみ該当します。 |
self_address |
varbinary(8) |
内部一貫性ポインター。 |
processor_group |
smallint |
プロセッサ グループ ID が格納されます。 |
権限
サーバーに対する VIEW SERVER STATE 権限が必要です。
例
SQL Server では、起動時にスレッドが開始され、これらのスレッドとワーカーが関連付けられますが、拡張ストアド プロシージャなどの外部コンポーネントでは、SQL Server プロセスでスレッドを開始できます。SQL Server ではこれらのスレッドを制御できません。sys.dm_os_threads で、SQL Server プロセスのリソースを消費する、問題のあるスレッドに関する情報を確認できます。
次のクエリを使用すると、SQL Server によって開始されなかったスレッドを実行しているワーカーと、実行に使用された時間を特定できます。
注 |
---|
次のクエリでは、簡略化のため SELECT ステートメントでアスタリスク (*) を使用していますが、特にカタログ ビュー、動的管理ビュー、およびシステム テーブル値関数では、アスタリスク (*) を使用しないようにしてください。今後の Microsoft SQL Server のアップグレードおよびリリースで、これらのビューおよび関数に列が追加されて列の順序が変更される可能性があります。このような変更により、特定の順序および列数を必要とするアプリケーションが機能しなくなる場合があります。 |
SELECT *
FROM sys.dm_os_threads
WHERE started_by_sqlservr = 0;